2013-06-12 77 views
2

如何在對象管理器管理RestKit時手動設置託管對象屬性的值?RestKit:如何手動設置託管對象屬性的值?

我創建了一個RKObjectManager,其中包含用於核心數據持久性的持久性存儲。

我向對象管理器添加了RKEntityMapping和RKResponseDescriptor。

現在我可以打電話對象管理器這樣的:

[[RKObjectManager sharedManager] 
getObjectsAtPath:@"/path_to_ressource" 
parameters:nil 
success:^(RKObjectRequestOperation *operation, RKMappingResult *mappingResult) { 
    // success 
} failure:^(RKObjectRequestOperation *operation, NSError *error) { 
    // report error 
}]; 

而且數據在一個UITableView(我使用NSFetchedResultsController爲)很好的展示。 一切看起來不錯,我的數據是持久的。

現在我想添加一個屬性到依賴於響應描述符的keypath的實體。 我應該怎麼做,並在哪裏?

我第一次嘗試:

我加了屬性的核心數據實體,然後我在上面給出的代碼的成功塊嘗試這樣做:

for (Entity *s in mappingResult.dictionary[@"CurrentEntities"]) { 
    s.isCurrent = [NSNumber numberWithBool:YES]; 
} 

for (Entity *s in mappingResult.dictionary[@"OldEntities"]) { 
    s.isCurrent = [NSNumber numberWithBool:NO]; 
} 

假設JSON看起來是這樣的:

{ 
    CurrentEntities: [{ id: 10, title: "bhubhbhu"}, { id: 11, title: "ezeze"}, ...], 
    OldEntities: [{ id: 0, title: "rf-reref"}, { id: 1, title: "vcvcvcvcv"}, ...] 
} 

設置新的本地屬性設置爲是後或NO,我確實可以看到結果在我的表視圖,但它看起來像這些更改將不會持續。

那麼有什麼想法?

編輯:

嗯,好像保存方面所作更改堅持正確:

NSError *error = nil; 
[[RKManagedObjectStore defaultStore].mainQueueManagedObjectContext saveToPersistentStore:&error]; 

編輯:

其實它看起來像我必須每一個對象後,保存上下文否則改變我得到核心數據錯誤。

回答

1

正如你所發現的,你可以保存你所做的編輯。由於您嘗試設置的值不是基於用於下載數據的URL或有效內容數據(值)的內容中的任何內容,因此最簡單的選項只是後處理和保存。要與映射過程交互並注入值,將需要更多的代碼。

相關問題