移行後、ゼロ以外の数値の 1 つがゼロとして表示されるようになりました。移行しない場合、値はゼロ以外の値を保持します。
最初に、次のように管理対象オブジェクトに数値を設定しようとしました。
[temp setNumUses:temp.numUses+1];
...しかし、それにより「EXC_BAD_ACCESS」が発生したため、次のように変更しました。
int hold = ((int)[[temp valueForKey:@"numUses"] intValue]);
hold++;
[temp setNumUses:[[NSNumber alloc] initWithInt:hold]];
...しかし、移行後、このコードはhold
、新しいコードを実行する前に、その値が明らかに1以上であったときに、値が0のintとして初期化されたと主張しました(1回だけ使用されたテストオブジェクトを参照)。
Core Data Database を移行しない場合、NSNumber は、多くのコンテキストの保存とアプリケーションの終了を通じて、その値を正常に保持します。
何が欠けている可能性がありますか?他の場所に保存されているデータベースで変更された NSManagedObjects の値を変更する広範なコードがありますが、「numUses」を改ざんするコードはありません。
考え?