Restkit一对多的关系追加设置,而不是设置一个新的集合

我有一个iOS Restkit相关的问题。 我有一个来自远程服务器的父子关系数据,并使用Restkit将这些对象映射到一个NSManagedObject对象。 我目前遇到的问题是对服务器的每个请求都会消除“子”关系,并将其replace为来自服务器的新数据。 有没有办法避免这些,并添加新的孩子呢?

例如:我有一个经典的类别 – >产品关系。

 {"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和产品4replace产品1和产品2在数据库上。 我确定我正确地设置了所有的关系和主键。 ( cat_idprod_id都被设置为主键)。

通过RestKit的内部框架调查后,我注意到在RKObjectMappingOperation类的line 576左右

 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

只需将RKRelationshipMapping实例的assignmentPolicy值设置为RKRelationshipMapping RKUnionAssignmentPolicy

Interesting Posts