Rpr*_*ata 5 objective-c object-object-mapping ios restkit
我有一个与iOS Restkit相关的问题.我有来自远程服务器的父子关系数据,并NSManagedObject使用Restkit 将这些对象映射到对象.我目前遇到的问题是每次向服务器发出的请求都会消除"子"关系并将其替换为来自服务器的新数据.有没有办法避免这些并追加新的孩子?
例如:我有一个经典的Category - > Products关系.
Run Code Online (Sandbox Code Playgroud){"categories": [ { "cat_id": "1", "cat_title": "category 1", "cat_tag": 1, "product": [ { "prod_id": "1", "prod_name": "product 1", "prod_tag": 1 }, { "prod_id": "2", "prod_name": "product 2", "prod_tag": 1 } ] } ] }
这工作正常,一切都与CoreData上的关系妥善保存.但是,如果我向服务器发出另一个请求并有一个新的响应:
Run Code Online (Sandbox Code Playgroud){"categories": [ { "cat_id": "1", "cat_title": "category 1", "cat_tag": 1, "product": [ { "prod_id": "3", "prod_name": "product 3", "prod_tag": 1 }, { "prod_id": "4", "prod_name": "product 4", "prod_tag": 1 } ] } ] }
我将产品3和产品4替换数据库上的产品1和产品2.我确信我正确设置了所有的关系和主键.(这两个cat_id和prod_id被设置作为主键).
通过RestKit的内部框架进行了调查,我注意到line 576在RKObjectMappingOperation课堂上,有
Run Code Online (Sandbox Code Playgroud)RKLogTrace(@"Mapped NSSet relationship object from keyPath '%@' to '%@'. Value: %@", relationshipMapping.sourceKeyPath, relationshipMapping.destinationKeyPath, destinationObject); NSMutableSet *destinationSet = [self.destinationObject mutableSetValueForKey:relationshipMapping.destinationKeyPath]; [destinationSet setSet:destinationObject];
所以我想这很容易改变
[destinationSet setSet:destinationObject];
至
[destinationSet addObjectsFromArray:[destinationObject allObjects]]
但我想知道是否有更好的方法来做到这一点?
干杯,
感谢您的支持Reskit。现在支持它RKRelationshipMapping。( https://github.com/RestKit/RestKit/issues/989 )
只需将实例assignmentPolicy的值设置为RKRelationshipMappingRKUnionAssignmentPolicy
| 归档时间: |
|
| 查看次数: |
742 次 |
| 最近记录: |