我有一个Person类(firstName和lastName属性),并形成其他单位职工(工资和职称的属性)。在我的Core Data模型中,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具有相同的映射关系?我可以将它们添加到该映射中,但感觉不对。
而且使用注册人映射时...
[objectManager.mappingProvider addObjectMapping:personMapping];
...我不使用RKManagedObjectMapping方法setMapping:forKeyPath:因为我们永远不会在这个应用等体验只是一个人我们永远不会映射它。但我仍然希望它注册。为人的子实体。
你可以试试这个:[RKObjectManager sharedManager] .mappingProvider setObjectMapping:personMapping forKeyPath:@ “工人”]?我是restkit的新手,但据我了解,你必须以某种方式在你的keypath中包含“workers:”,并认为这将做到这一点。为什么它被称为工作,但不返回工资和头衔? – Pfitz
谢谢,我会试一试!对于你的问题,我只是很快把它扔在一起,并没有添加这些值。 – rob5408
也许你可以试试这个:[personMapping mapKeyPath:@“workers.firstName”toAttribute:@“firstName”]; – Pfitz