2016-11-20 9 views
0

私はそれにDetailオブジェクトの束を保持するNSSetを持っています。各Detailオブジェクトには、.nameプロパティと.textプロパティがあります。 .name = "memo"というセット内の特定のDetailを見つけて、その.textプロパティで保持されているものを確認したいと思います。Swiftのプロパティ名でオブジェクトのセット内の1つのオブジェクトを取得します

どのように私はこれを行うのですか?

(.indexOfが動作しません。私が見つけて、何とか.MAP使用する必要がある場合、私は今ない、またはスウィフト内の1つの特定のオブジェクトその直接アクセスする手段があります場合。)

明確にするためには、私はコアデータを使用しており、各「イベント」オブジェクトは多くの詳細オブジェクトと関係しています。 DetailsのNSSetは、私が特定のイベントから降りてくるセットです。

繰り返しますが、ここでは次のようになります。

Detailオブジェクトは、私は、アクティブ "イベント" から詳細を取得

の.text

.nameの

特性を有していますこのように:

var someDetails: NSSet()? 
someDetails = event.details! 

これで、そのイベントの詳細がわかりました。

これで、.name = "memo"のディテールオブジェクトにアクセスし、.textプロパティが何であるかを確認します。

ディテール管理オブジェクトを作成し、そのプロパティを割り当てて、セットに追加するだけで、ディテール自体の作成がはるかに簡単になりました。セットに必要なすべてのオブジェクトが含まれていれば、それをevent.detailsに割り当て、Core Dataに保存し直しました。個人的な「ディテール」にアクセスすることははるかに難しいとは思っていませんでした。

私は直接アクセスするために次に何をすべきかわかりません。

私は、セットをループして、各オブジェクトを見て、私が望むものを引き出しているのですか?

ありがとうございます!

答えて

1

ただし、私はあなたがについてNSSet質問にお答えします、代わりにNSSetSet使用する必要があります。私はその後、

let results = details.flatMap { $0 as? Detail }.filter { $0.name == "a" } 
を書き、今あなたが name"a"あるすべてのニレをしたいあなたはこの

class Detail: NSObject { 
    let name: String 
    let text: String 

    init(name: String, text: String) { 
     self.name = name 
     self.text = text 
    } 
} 

NSSet

このような
let details = NSSet(array: [ 
    Detail(name: "a", text: "1"), 
    Detail(name: "b", text: "2"), 
    Detail(name: "c", text: "3"), 
    Detail(name: "d", text: "4")] 
    ) 

のようなクラスを持っている想像

と最後にそれらを印刷する

for result in results { 
    print(result.text) 
} 
+0

私が探していたものとまったく同じです。ありがとう! – Kent

関連する問題