2012-11-05 25 views
5

我有一個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_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]]

但我想知道是否有更好的方法來做到這一點?

乾杯,

回答

相關問題