更新: ここでの実際の問題はコア データではなく、新しいビューの viewWillLoad と viewDidLoad の間でオブジェクトが解放されるという、私の不適切なプロパティ宣言 (strong/weak) によるものではないことに注意してください。
私は iOS の Core Data に関する Tim Isted の本に取り組んでおり、今までうまくやっています。新しいviewControllerが2番目の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 の前に値があり、行の後に値が置き換えられます。どんな助けでも大歓迎です。
ありがとう、スティーブ