3

NSDictionary として実装された Transformable 属性タイプを含む Entity を CoreData に作成しました。NSDictionary 属性には、カスタム クラスの値のみが含まれます。カスタム クラスのプロパティはすべて NSString 型です。カスタム クラスは、以下を実装する NSCoding に準拠しています。

-(void)encodeWithCoder:(NSCoder*)coder;

-(id)initWithCoder:(NSCoder *)コーダー

初めてエンティティを保存すると、変換可能 (NSDictionary) タイプを含むすべての属性が適切に DB に保存されます。DBから同じEntityを取得して更新すると(Transformable属性も含めて)ちゃんと更新されているようです。ただし、アプリを閉じてから再度開いてエンティティを取得すると、NSDate 型と NSString 型の残りの属性は最新ですが、更新された Transformable 属性型が表示されません。Transformable 属性は、更新された値ではなく、保存された元の値です。

これは KVO の問題ですか、それともカスタム クラスで満たされた NSDictionary を CoreData に保存しようとしたときに何か不足していますか?

4

2 に答える 2

6

値を に戻していNSManagedObjectますか? はNSManagedObject、変換可能なオブジェクトへの変更を監視しません。保存する前に、適切なセッターを呼び出す必要があります。

于 2010-05-10T05:14:04.903 に答える
3

私は同じ問題に遭遇し、NSMutableDictionary の代わりに変換可能な属性として NSDictionary に切り替えました。NSDictionary を mutableCopy としてフェッチし、それに取り組み、最終結果を NSDictionary に入れ、それを managedObject に再挿入するだけです。私のためにトリックをしましたが、まだ別の解決策を見つけていません。

于 2010-09-13T22:18:08.030 に答える