我有一个与 iOS Restkit 相关的问题。我有一个来自远程服务器的父子关系数据,并将这些对象映射到NSManagedObject
带有 Restkit 的对象。我目前遇到的问题是对服务器的每个请求总是清除“子”关系并将其替换为来自服务器的新数据。有没有办法避免这些并附加新的孩子?
例如:我有一个经典的 Category --> Products 关系。
{"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上的关系正确保存。但是,如果我向服务器发出另一个请求并有新的响应:
{"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
课堂上,有
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]]
但我想知道是否有更好的方法来做到这一点?
干杯,