コアデータに関する知識を得ようとしています。これまでのところ、エンティティを作成し、このエンティティから値を追加、取得、および削除するコツをつかみました。
私の質問は次のとおりです。NSDictionary
コア データを使用する場合、エンティティにプロパティを格納する方法は何ですか?
コアデータに関する知識を得ようとしています。これまでのところ、エンティティを作成し、このエンティティから値を追加、取得、および削除するコツをつかみました。
私の質問は次のとおりです。NSDictionary
コア データを使用する場合、エンティティにプロパティを格納する方法は何ですか?
これにはいくつかの方法があります。
を。各ディクショナリ キーがエンティティ属性によって表されるように、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 などの永続化フレームワークを使用できます。自分で大量のコードを節約できます。
属性タイプを に変更しますTransformable
。
mogenerator を使用している場合 (そうすべきです)、変換可能オブジェクトに対して生成されるデフォルトの型は ですid
。
mogenerator に特定のタイプを生成させるには、属性の値をNSDictionary
持つカスタム キーを追加できます。このスクリーンショットを参照してください。attributeValueClassName
NSDictionary