15

コアデータに関する知識を得ようとしています。これまでのところ、エンティティを作成し、このエンティティから値を追加、取得、および削除するコツをつかみました。

私の質問は次のとおりです。NSDictionaryコア データを使用する場合、エンティティにプロパティを格納する方法は何ですか?

4

3 に答える 3

6

これにはいくつかの方法があります。

を。各ディクショナリ キーがエンティティ属性によって表されるように、NSDictionary を表すエンティティを作成します。

b. 別のエンティティを作成する上記のアプローチが気に入らない場合でも、最初に NSDictionary を NSData にシリアル化することを条件として、NSData 型の単一の Core Data フィールドに NSDictionary を格納できます。

//NSDictionary to NSData
NSMutableData *data = [[NSMutableData alloc] init];
NSKeyedArchiver *archiver = [[NSKeyedArchiver alloc] initForWritingWithMutableData:data];
[archiver encodeObject:dictionary forKey:@"Some Key Value"];
[archiver finishEncoding];
//  data is now ready to use

また、Core Data から読み取るときに、NSData を NSDictionary に変換する必要があります。

// NSData to NSDictionary
NSData *data = [[NSMutableData alloc] initWithContentsOfFile:[self dataFilePath]];
NSKeyedUnarchiver *unarchiver = [[NSKeyedUnarchiver alloc] initForReadingWithData:data];
NSDictionary *dictionary = [[unarchiver decodeObjectForKey:@"Some Key Value"] retain];
[unarchiver finishDecoding];
//  dictionary is now ready to use

c. 最後に、すべてのデータ構造が自動的に取得、表示、保存される Sensible TableView などの永続化フレームワークを使用できます。自分で大量のコードを節約できます。

于 2013-05-16T17:19:39.703 に答える
4

属性タイプを に変更しますTransformable

mogenerator を使用している場合 (そうすべきです)、変換可能オブジェクトに対して生成されるデフォルトの型は ですid

mogenerator に特定のタイプを生成させるには、属性の値をNSDictionary持つカスタム キーを追加できます。このスクリーンショットを参照してください。attributeValueClassNameNSDictionary

于 2015-05-04T07:55:26.853 に答える