我有一個iOS Restkit相關的問題。我有一個來自遠程服務器的父子關係數據,並使用Restkit將這些對象映射到一個NSManagedObject
對象。我目前遇到的問題是對服務器的每個請求都會消除「子」關係,並用來自服務器的新數據替換它。有沒有辦法避免這些並追加新的孩子?Restkit一對多的關係附加到設置,而不是設置一個新的集合
例如:我有一個經典的類別 - >產品關係。
{"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的內部框架經調查,我注意到,在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]]
但我想知道是否有更好的方法來做到這一點?
乾杯,