我的應用程序中只有一個數據庫模型模式,所以恕我直言,NSManagedObjectModel和NSPersistentStoreCoordinator對象可能駐留在主應用程序委託類中,以便從應用程序的其他部分訪問。但是,我想爲我的應用程序的各個部分使用不同的NSManagedObjectContexts對象,因爲我將使用多線程。如何有不同的NSManagedObjectContexts?
從我個人的數據庫經驗來看,我認爲NSManagedObjectContext在某種程度上與數據庫事務的概念相似。因此,爲了避免將不需要的更改從一個應用程序部分提交到另一個應用程序部分,我的應用程序的各個多線程部分具有單獨的上下文對象是合乎邏輯的。當創建新的項目與核心數據啓用,Xcode創建主應用程序委託三種基本方法
- (NSManagedObjectModel *)managedObjectModel{
// reads your database model file and defined entities from defined DataSchema.xcdatamodeld file
}
- (NSPersistentStoreCoordinator *)persistentStoreCoordinator{
// uses already read database model and initializes defined sqlite database file and returns a persistent store coordinator - a pointer to the database
}
- (NSManagedObjectContext *)managedObjectContext{
// opens a connection (and transaction) to the database.
}
所以,問題是,這是否合理留在主應用程序委託persistentStoreCoordinator和managedObjectModel方法(和訪問它們通過應用程序),但將managedObjectContext方法移動到那些需要私人數據處理的類?
謝謝。你能否解釋一下「背景情境是父母情境下的孩子」?這種背景下的親子關係是什麼? AFAIK可以創建上下文作爲事務:插入記錄,更新或刪除它們,然後保存上下文。該事務中的所有更改都已提交,因此修改的數據可從另一個上下文中看到。我爲什麼要在上下文之間建立父子關係,還是我想念一些東西? – Centurion 2012-03-29 18:21:26
你什麼時候開始使用Core Data? iOS 5?如果你只知道iOS 5中的Core Data,那麼你已經有了父子關係。在iOS 5之前,在後臺環境中執行操作有點複雜:http://developer.apple.com/library/mac/#documentation/cocoa/conceptual/coredata/Articles/cdConcurrency.html#//apple_ref/ DOC/UID/TP40003385-SW1 – bandejapaisa 2012-03-29 18:30:45