Person クラス (firstName と lastName の属性) と別のエンティティ Worker (賃金と役職の属性) があります。私の Core Data モデルでは、 Person エンティティが Worker エンティティの親として設定されています。私の AppDelegate で、マッピングをセットアップします...
RKManagedObjectMapping* personMapping = [RKManagedObjectMapping mappingForEntityWithName:@"Person" inManagedObjectStore:objectManager.objectStore];
[personMapping mapKeyPath:@"firstName" toAttribute:@"firstName"];
[personMapping mapKeyPath:@"lastName" toAttribute:@"lastName"];
[objectManager.mappingProvider addObjectMapping:personMapping];
RKManagedObjectMapping* workerMapping = [RKManagedObjectMapping mappingForEntityWithName:@"Worker" inManagedObjectStore:objectManager.objectStore];
[workerMapping mapKeyPath:@"wage" toAttribute:@"wage"];
[workerMapping mapKeyPath:@"title" toAttribute:@"title"];
[objectManager.mappingProvider setMapping:workerMapping forKeyPath:@"workers"];
RKManagedObjectSeeder* seeder = [RKManagedObjectSeeder objectSeederWithObjectManager:objectManager];
[seeder seedObjectsFromFiles:@"people.json", nil];
... people.json で ...
{
"workers":
[
{
"firstName":"Rob",
"lastName":"Johnson"
},
{
"firstName":"John",
"lastName":"Roberts"
}
]
}
...これを実行すると、オブジェクトはシードされません。Worker クラスが Person と同じマッピングを持っているという事実をどのように表現すればよいですか? それらをそのマッピングに追加することもできますが、それは間違っていると感じています.
また、Personマッピングを登録するときに...
[objectManager.mappingProvider addObjectMapping:personMapping];
... RKManagedObjectMapping メソッド setMapping:forKeyPath: は使用しません。このアプリケーションで Person だけを経験することはなく、マッピングすることもないからです。でもやっぱり登録したい。Person の子エンティティの場合。