我有一個基於Mac文檔的應用程序,使用NSPersistentDocument作爲文檔模型。在主線程中添加的線程中的核心數據讀取數據
當創建新文檔時,應用程序增加了一些默認數據(幾個運動對象和用戶數據),以在initiWithType方法文檔。
- (id)initWithType:(NSString *)typeName error:(NSError **)outError {
self = [super initWithType:typeName error:outError];
NSManagedObjectContext *managedObjectContext = [self managedObjectContext];
[[SportManagement sharedManager] addDefaultSports:managedObjectContext];
[[UserManagement sharedManager] addDefaultUser:managedObjectContext];
[managedObjectContext processPendingChanges];
return self;
}
該應用具有輸入功能,從一些硬件,運行在一個線程,這是我的設置如下進口數據(managedObjectContext在於NSPersistentDocument的):
dispatch_async(dispatch_get_global_queue(0, 0),^{
NSManagedObjectContext *moc = [[NSManagedObjectContext alloc] initWithConcurrencyType:NSConfinementConcurrencyType];
[moc setPersistentStoreCoordinator:[managedObjectContext persistentStoreCoordinator]];
數據從硬件導入到許多NSManagedDataObject項目中。每個ManagedObject都有一個「運動」字段,該字段需要填充創建文檔時創建的其中一個運動對象。
然而,沒有在- (id)initWithType:(NSString *)typeName error:(NSError **)outError
添加的運動物體在線程(MOC)的新ManagedObjectContext存在。
如果我運行應用程序,創建一個新的文件,然後讓應用程序閒置一分鐘 - 或 - 這樣,然後嘗試導入,那麼運動的物體做線程管理對象上下文中。
如何同步線程中新ManagedObjectContext從NSPersistantDocument最主要的一個?
我試過了:[managedObjectContext processPendingChanges];
和[managedObjectContext setStalenessInterval];
,但都沒有解決這個問題。
有趣的是,這並沒有出現在Mac OS X 10.8的情況發生,只有在10.7
我已經在應用程序,但這是爲了獲得線程中添加的數據回到主線程。我想要做的是獲取已經添加到主線程中的文檔ManagedObjectContext的數據,以顯示在新線程的新ManagedObjectContext中。 –
然後我很困惑,因爲現在,當我一起閱讀你的問題和評論時,我甚至無法描述你描述的場景。也就是說,評論的最後一句話是什麼意思?你能詳細說明(可能還有導致問題的實際代碼)嗎? –
我編輯了原文 - 希望現在有點更清楚了 - 感謝您的幫助。 –