2011-09-12 25 views
3

我使用的串行GCD隊列輔助managedobjectcontext,使用相同的持久存儲區協調員(和型號)。我遇到的問題是二級managedobjectmodel顯示爲空 - 所有提取請求都不返回任何內容。我正在使用一個SQLite商店。我試圖在主線上做同樣的事情無濟於事。多的NSManagedObjectContext發出

代碼非常簡單。 CoreDataUtility是一個單例,單例的manageObjectContext成員是另一個託管對象上下文。

NSManagedObjectContext *managedObjectContext = [[NSManagedObjectContext alloc] init]; 
    [managedObjectContext setPersistentStoreCoordinator:[CoreDataUtility instance].managedObjectContext.persistentStoreCoordinator]; 

獲取請求(我試過幾個)與媽媽的例外是相同的。

二級媽媽看在調試器很好 - 你所期望的是在初級媽媽一樣的屬性其實都是一樣的。

回答

0

的問題竟然是與我加載模型的方式。我沒有解釋爲什麼這會起作用,但它確實解決了問題。也許別人可以闡明。

此代碼:

NSString *modelPath = [[NSBundle mainBundle] pathForResource:@"mymodel" ofType:@"momd"]; 
NSURL *modelURL = [NSURL fileURLWithPath:modelPath]; 
managedObjectModel = [[NSManagedObjectModel alloc] initWithContentsOfURL:modelURL]; 
0

如果持久存儲協調從[CoreDataUtility instance].managedObjectContext.persistentStoreCoordinator返回正確的是(你檢查嗎?),那麼這部分至少應該罰款。

我使用類似的方法在自己的應用程序,和我創建的背景上下文代碼是完全一樣的主要背景。我希望問題可能在其他地方。

你試過訪問對象的主要方面,然後斷裂對象爲使用其他背景:

NSManagedObject *backgroundObject = [backgroundContext existingObjectWithID:object error:&error]; 

,看是否該對象是否仍然有效?

+0

如果我在第一時間拿到上下文的有效對象,然後嘗試檢索其OBJECTID我得到空從其他:

managedObjectModel = [[NSManagedObjectModel mergedModelFromBundles:nil] retain]; 

與此代碼替換上下文。我正在做同樣的事情來創造媽媽 - 給它一樣的持久性商店協調員。 – John

+0

在該操作上,出現以下錯誤。錯誤:錯誤域= NSCocoaErrorDomain代碼= 133000「操作無法完成(可可錯誤133000.) – John

+0

只是爲了澄清 - 當你說」媽媽「,我認爲你的意思是上下文,而不是模型? ?店協調員是由你的環境權共享 – Stuart