我有一個永久存儲的核心數據結構< - >主線程上下文< - >私有線程上下文(用作scratchpad)。NSManagedObjectContext objectWithId不返回對象,儘管有效的objectId
我的用戶按下「保存」創建並在「私人線程」 /便箋背景下配置一本雜誌的對象之後。
我取帳戶當前登錄從主線程上下文,因爲新的雜誌將被創建必須分配一個賬號。
Account* accountForMagazine = [self.accountsConnector getSelectedAccount];
NSLog(@"object id: %@",accountForMagazine.objectID);
對象ID的NSLog輸出爲:
0xa677790 <x-coredata://F635CE5A-C335-48F0-BB27-61B7D9XXXXD8/Account/p4>
所以它的永久ID和告訴我,對象是在持久存儲。
然後我切換到專用線程(databaseConnector只是一個私有線程上的託管對象上下文的包裝),並嘗試將該帳戶對象帶到該線程,以便它可以分配給正在發送的雜誌對象被保存。
[self.databaseConnector executeOnCorrectThread:^
{
Account* account = (Account*)[self.databaseConnector.getContext objectWithID:accountForMagazine.objectID];
self.magazine.account = account;
if(!account) { NSLog(@"nil account"); }
[self.databaseConnector save];
}
遇到的問題即時消息是,雖然被保存在新雜誌的對象,並能夠進入持久性存儲,他們沒有連接到一個帳戶!當然,每次都會顯示NSLog語句 - 表示此線程上的帳戶對象爲零。
所以,即使我有一個有效的objectID,因此對象持久存儲存在,我不是通過objectWithId私人線程得到一個帳戶對象。
任何想法,這是爲什麼?
感謝
Vb的
我認爲你是到這裏的東西,因爲objectWithID:應該拋出一個異常,如果給定ID的對象不存在。 – svena 2013-04-05 07:07:59
你說得對,getContext返回零。謝謝。 – Vazzyb 2013-04-05 20:16:54