20

私のアプリには、NSDictionaryキーが のサブクラスのインスタンスである がありますNSManagedObject

ただし、問題はNSManagedObject、プロトコルが実装されていないことです。つまり、メソッドが正常に機能していても、 NSCopyingCore Data オブジェクト/インスタンスをNSManagedObject辞書キーとして使用することはできません。-[hash]

するべきでしたか?

4

4 に答える 4

34
于 2009-09-30T13:49:38.770 に答える
1

[[[myManagedObject objectID] URIRepresentation] absoluteString] をキーとして使用することをお勧めします。

于 2009-09-30T13:10:05.977 に答える
0

同様の問題があり、いくつかのエンティティをそれぞれに追加のデータでバンドルする必要があり、最初に試しました:

@{entity1:data1, @entity2:data2, @entity3:data3}

これは上記の理由 (NSCopying) で機能しなかったため、次のようにしました。

@[
   @{@"entity":entity1, @"data":data1},
   @{@"entity":entity2, @"data":data2},
   @{@"entity":entity3, @"data":data3}
]

ただし、このソリューションは、これらのエンティティへの辞書スタイルのアクセスを必要としない場合、または必要なものを見つけるために喜んで反復する場合にのみ意味があります。私の場合、これはパッケージングの問題でした。これらのエンティティを NSManagedObjectContext で渡す場合、それらを使用するには同じである必要があることに注意してください。

于 2013-01-10T06:59:10.413 に答える
0

ディクショナリ キーとして使用する NSManagedObject のインスタンスへの参照を含むラッパー クラスを作成できますか? 次に、このラッパー クラスにハッシュ メソッド (おそらく NSManagedObject のハッシュ メソッドを呼び出すだけ) と共に NSCopying を実装させ、このラッパーを辞書キーとして使用することができます。

于 2009-09-30T12:53:49.010 に答える