私はPersonクラス(firstNameとlastNameの属性)ともう1つのエンティティWorker(賃金とタイトルの属性)を持っています。私のコアデータモデルでは、PersonエンティティはWorkerエンティティの親として設定されています。私AppDelegate私のセットアップで私のマッピング...RestKitエンティティマッピングと親エンティティマッピング
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と同じマッピングを持っているという事実を表現しますか?私はそのマッピングにそれらを追加することができますが、それは間違っていると感じます。私たちは、このアプリケーションとそうでちょうど人を経験することは決してないだろうので:forKeyPath:また
使用している人のマッピングを登録...
[objectManager.mappingProvider addObjectMapping:personMapping];
...私はRKManagedObjectMappingメソッドsetMappingを使用していません私たちは決してそれをマッピングしません。しかし、私はまだそれを登録したい。人の子エンティティのために。
これを試すことができますか?[[RKObjectManager sharedManager] .mappingProvider setObjectMapping:personMapping forKeyPath:@ "workers"]?私はRestkitを初めて使っていますが、理解している限り、あなたのキーパスに「労働者:」を何とか入れて、これがこれをすると思っています。なぜそれは労働と呼ばれますが、賃金と肩書を返さないのですか? – Pfitz
ありがとう、私はそれを試してみましょう!あなたの質問には、私はすぐに一緒にこれを投げていたし、まだそれらの値を追加していない。 – rob5408
多分あなたもこれと一緒にeperimentすることができます:[personMapping mapKeyPath:@ "workers.firstName" toAttribute:@ "firstName"]; – Pfitz