2014-02-24 77 views
1

我想了解RestKit的對象抓取是如何工作的。據我瞭解,當我打電話,從RestKit中使用RKObjectManager從CoreData獲取

[[RKObjectManager sharedManager] getObjectsAtPath:@"/mypath/objects" parameters:nil success:^(RKObjectRequestOperation *operation, RKMappingResult *mappingResult) { 
     // Use objects that are returned. 
    } failure:^(RKObjectRequestOperation *operation, NSError *error) { 
     // Handle error 
    }]; 

Restkit將嘗試從web服務指定路徑來加載的對象,並調用成功塊一次的對象已經被檢索。它還會在調用成功塊之前使用我提供的映射來更新核心數據對象圖。如果我只想要核心數據中的對象怎麼辦?我如何訪問這些對象?我是否應該使用sharedManager的managedObjectStore的mainQueueManagedObjectContext直接對其執行NSFetchRequest,並且如果需要更新Core Data持久性存儲,則只需調用getObjectsAtPath:parameters:success:failure:

回答

2

據我瞭解

是的,基本上是這樣。 RestKit將從指定路徑的服務器獲取數據,並將其反序列化並根據映射和響應代碼/描述符將其映射到對象中。如果您已指定使用核心數據,那麼它將在調用成功塊之前保存結果。

如果我只希望這是核心數據

那你不使用RestKit的對象,你剛剛訪問mainQueueManagedObjectContext,經常有NSFetchedResultsController

+0

繁榮,正是我所期待的。這證實了我的懷疑。感謝你的回答。 –

+0

有一個問題@如果我們這樣做,我想我們會阻塞主線程(即用戶界面)一段時間,不是嗎?除此之外,如果我們使用這些數據訪問數據,同時還有一個請求正在進行,那又如何呢?謝謝。 – Ricardo

+1

@Ricardo RestKit將爲您創建後臺線程以運行網絡請求和映射操作 – Wain