我有一个持久存储<->主线程上下文<->专用线程上下文(用作草稿页)。
我的用户在“私人线程”/草稿页上下文上创建和配置杂志对象后,按下“保存”。
我从主线程上下文中获取当前登录的帐户,因为要创建的新杂志必须分配一个帐户。
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语句,表示该线程上的帐户对象为nil。
因此,即使我有一个有效的objectId,因此该对象存在于持久存储中,我也不会通过objectWithId在私有线程上获得帐户对象。
有什么想法吗?
谢谢
电压b