2012-11-12 54 views
1

我正在使用RestKit核心數據。直到現在我初始化RestKit如下:RestKit與核心數據:使用NSPersistentStore與RestKit RKObjectManager

[...] 
RKObjectManager *objectManager = [RKObjectManager managerWithBaseURLString:@"http://URL"]; 
objectManager.objectStore = [RKManagedObjectStore objectStoreWithStoreFilename:@"database.sql"]; 
[...] 

沒有這個Xcode中自動生成的核心數據屬性:在NSManagedObject:

@property (readonly, strong, nonatomic) NSManagedObjectContext *managedObjectContext; 
@property (readonly, strong, nonatomic) NSManagedObjectModel *managedObjectModel; 
@property (readonly, strong, nonatomic) NSPersistentStoreCoordinator *persistentStoreCoordinator; 

獲取數據通過調用objectsWithFetchRequest工作。現在我想使用NSFetchingResultsController,因此我至少需要這樣一個managedObjectContext。但是從哪裏得到這個managedObjectContext?我的第一個想法是:從AppDelegate.m中的自動生成的managedObjectContext,但這3個屬性managedObjectContext,managedObjectModel和persistentStoreCoordinator都是相互依賴的。

如何正確地將RestKit鏈接到核心數據?我如何將persistentStoreCoordinator「鏈接」到RestKit和RKObjectManager?

回答

0

您已經將RestKit和Core Data連接到該代碼。現在,如果我理解了這個問題,您只需要能夠訪問託管對象上下文。嘗試創建一個「核心數據管理器」對象,其中包含上下文,模型和存儲協調器所需的所有代碼與這些屬性。然後,任何需要該代碼的類都可以從核心數據管理器繼承。

+0

你對「核心數據管理器」對象有什麼意義?這是一個特定的類嗎?我可能找到了我在找的東西: NSManagedObjectContext * context = [[RKObjectManager sharedManager] .objectStore managedObjectContextForCurrentThread];獲取managedObjectContext。它是否正確? – netsplit

+0

當我設置我的應用程序時,有一堆與自動生成的屬性關聯的核心數據代碼。我只是將該代碼移動到自定義對象中,並在需要時重用它。但是,這也可能是您的解決方案 – danielM

0

找到答案在http://mobile.tutsplus.com/tutorials/iphone/advanced-restkit-development_iphone-sdk/

RKManagedObjectStore - 對象存儲包裹內部核心數據類別,包括NSManagedObjectModel,NSPersistentStoreCoordinator,和的NSManagedObjectContext的初始化和配置。

RestKit處理「核心數據」「自動鏈接」。沒有聯繫要做。

通過調用fetchAllSortedBy的NSManagedObject或NSManagedObject + ActiveRecord.h中的類似方法獲取NSFetchingResultsController是可能的。例如

fetchedResultsController = [Customer fetchAllSortedBy:@"surname" ascending:YES withPredicate:nil groupBy:@"surname"]; 
相關問題