更新:請注意,這裏的實際問題不是核心數據更多,而我的強屬性/弱屬性聲明導致對象在新視圖的viewWillLoad和viewDidLoad之間釋放。核心數據多個managedObjectContexts
我正在通過Tim Isted撰寫的關於iOS中的Core Data的書,並且至今一直做得很好。我試圖追蹤新的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在行之前具有值之前,它們被替換。任何幫助將不勝感激。
謝謝你,史蒂夫
謝謝Jody&Rog。你幫助我更好地理解錯誤,並通過這種方式工作。我仍然努力與具有objectWithId的線,但我會到達那裏。然而,今天我瞭解到強制/弱勢財產申報的重要性。我失去了viewWillLoad和viewDidLoad之間的值。在真正開始理解調試器的幾個小時之後,我追查到一個不正確的屬性聲明 - 提示很多自我厭惡:)這是我將在下次知道的一個。再次感謝,史蒂夫 – Steve