在閱讀Object Mapping-Guide on GitHub的RestKit後,我的問題沒有消失,所以也許有人可以說RestKit是否可以處理以下想法。沒有KVC的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"
}
]
由於侷限性,我無法將所有聯繫人嵌入到公司中(否則我不會寫這些),所以我想在導入時映射數據時執行此操作。
問題
是否有可能映射每個聯繫人到它所屬公司進口(由屬性companyID標識)與RestKit給出的方法?
如果不是,我想知道它的最佳解決方案。謝謝!
背景
在我的這個應用程序的第一個構建我映射對象到指定的實體(無關係)的進賬都屬於接觸到公司的謂詞companyID =%@。由於大量的數據(4000+公司,7000+聯繫人)取得所有所有聯繫人需要大約一秒鐘 - 所以我想出了使用關係的想法(這適用於本地虛擬數據)。
解決方案
下面我目前的映射給出答案的幫助如下所示(RestKit第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
...
可否請你分享這個例子中你的工作解決方案? :)僅供映射 – 2012-08-19 08:02:50
使用示例配置更新了我的上面的條目。希望能幫助到你! – flashfabrixx 2012-08-20 09:12:54