【发布时间】:2012-03-08 06:44:49
【问题描述】:
在阅读了 RestKit 的 Object Mapping-Guide on GitHub 之后,我的问题并没有消失,所以也许有人可以说 RestKit 是否可以处理以下想法。
有关系的实体
Company
- unitID
- companyID
- name
- contacts* (Company -->> Contact | 1:n)
Contact
- unitID
- companyID
- contactID
- lastName
- firstName
- account* (Contact >--> Company | 1:1)
JSON(公司)
[
{
"unitID":"003CABD8DEB5DC13C",
"companyID":"BSP-002999",
"name":"Testcompany"
}
]
JSON(联系人)
[
{
"unitID":"DAC2ACCC125795D00",
"companyID":"BSP-002999",
"contactID":"CLP-015468",
"firstName":"Mister",
"lastName":"Wayne"
}
]
由于限制,我无法将所属联系人嵌套到公司中(否则我不会写这个),所以我想在导入时映射数据时这样做。
问题
是否可以在导入时使用 RestKit 给定的方法将每个联系人映射到其所属公司(由属性 companyID 标识)?
如果没有,我想知道最好的解决方案。谢谢!
背景
在我第一次构建此应用程序时,我已将对象映射到给定实体(没有关系),并使用谓词 companyID = %@ 将所有所属联系人提取到公司。由于数据量很大(4000 多家公司,7000 多个联系人),获取所有相关联系人大约需要一秒钟 - 所以我想出了使用关系的想法(这与本地虚拟数据完美配合)。
解决方案
在下面给出的答案的帮助下,我当前的映射如下所示(RestKit v.10)。
// Setting up Restkit with objectStore
...
// Init objectMapping for Class Company
companyMapping = [RKManagedObjectMapping mappingForClass:[Company class] inManagedObjectStore:objectStore];
[companyMapping mapKeyPath:@"unitID" toAttribute:@"unitID"];
[companyMapping mapKeyPath:@"companyID" toAttribute:@"companyID"];
[companyMapping mapKeyPath:@"name" toAttribute:@"name"];
companyMapping.setDefaultValueForMissingAttributes = NO;
companyMapping.primaryKeyAttribute = @"companyID";
// Init objectMapping for Class Contact
contactMapping = [RKManagedObjectMapping mappingForClass:[Contact class] inManagedObjectStore:objectStore];
[contactMapping mapKeyPath:@"unitID" toAttribute:@"unitID"];
[contactMapping mapKeyPath:@"companyID" toAttribute:@"companyID"];
[contactMapping mapKeyPath:@"contactID" toAttribute:@"contactID"];
[contactMapping mapKeyPath:@"lastName" toAttribute:@"lastName"];
[contactMapping mapKeyPath:@"firstName" toAttribute:@"firstName"];
contactMapping.setDefaultValueForMissingAttributes = NO;
contactMapping.primaryKeyAttribute = @"contactID";
// Init relationships
[contactMapping mapRelationship:@"company" withMapping:companyMapping];
[contactMapping connectRelationship:@"company" withObjectForPrimaryKeyAttribute:@"companyID"];
// Get objects from server
...
【问题讨论】:
-
你能分享一下这个例子的工作解决方案吗? :) 仅用于映射
-
用示例配置更新了我上面的条目。希望对您有所帮助!
标签: iphone core-data restkit relationships