更新:请注意,这里的实际问题更多不是核心数据,而是我的错误属性声明 - 强/弱 - 导致对象在新视图的 viewWillLoad 和 viewDidLoad 之间被释放。
我正在阅读 Tim Isted 关于 iOS 中的核心数据的书,到目前为止一直做得很好。我正在尝试遵循新的 viewController 如何使用第二个 managedObjectContext - 下面的 editingContext - 在保存之前捕获文本字段中的更改。
- (void)setCurrentPerson:(AWPerson *)aPerson {
if( !aPerson )
{
aPerson = [AWPerson randomPersonInManagedObjectContext:self.editingContext];
}
else if( [aPerson managedObjectContext] != self.editingContext ) {
self.title = @"Edit person";
aPerson = (id)[self.editingContext objectWithID:[aPerson objectID]];
}
[...]
}
此时:
aPerson = (id)[self.editingContext objectWithID:[aPerson objectID]];
当我在调试器中为 aPerson 打印描述时,我应该得到
<AWPerson: 0x6b5de70> (entity: Person; id: 0x6b5bb60 <x-coredata://A6EC85F2-81A8-488F-B2E3-F82687C252A2/Person/p1> ; data: {
dateOfBirth = "1973-11-03 12:53:58 +0000";
eyeColor = "(...not nil..)";
firstName = Peter;
lastName = Dickens;
yearOfBirth = 1973;
相反,我得到以下<fault>
替换值的地方
<AWPerson: 0x6b609d0> (entity: Person; id: 0x6b5bb60 <x-coredata:
//A6EC85F2-81A8-488F-B2E3-F82687C252A2/Person/p1> ; data: <fault>)
我真的看不到发生了什么。在 aPerson 行之前有值,在行之后,它们被替换。任何帮助将不胜感激。
谢谢,史蒂夫