Core Dataの1つの側面では少し混乱します。つまり、いつ初期のalloc/initルーチンを使うのですか?コアデータを持つオブジェクトを作成し、それを現在の管理オブジェクトコンテキストに保存します。コアデータを使用する際のモデルのインスタンス化の質問
私はそれがむしろあいまいな質問であることを知っています。
私は現在、iPhone上のユーザーの連絡帳をすべて反復処理するアプリケーションを用意しています。そこから、私は「Person」というモデルクラスを作成しました。私は人のループの中でこのようなことをしていました。
Person * person = [[Person alloc] initWithWrapper:mywrapper];
mywrapperにはpersonの属性を持つNSDictionaryが含まれます。後で私の人のオブジェクトで私のアプリのアドレス帳を設定することができるだろう。
私はコアデータを使ってアプリケーションの一部を再構築し始めました。上記の戦略を引き続き使用して住所録を作成しますか?または、代わりに次のようなことをしますか:
Person *person = (Person *)[NSEntityDescription insertNewObjectForEntityForName:@"Person" inManagedObjectContext:managedObjectContext];
[person setName:name];
[person setDob:dob];
// Commit the change.
NSError *error;
if (![managedObjectContext save:&error]) {
// Handle the error.
}
問題は、このコードがアプリが起動するたびに実行されることです。アプリが読み込まれるたびに、ストレージメカニズムに人の冗長インスタンスが設定されるため、コアデータを使用しないでください。 NSManagedObject(Personクラス)を変更し、initWithWrapper:メソッドを追加して、通常通りに続行する必要がありますか?
ちょっと混乱していると、明確化が大好きです。
initをオーバーライドしてsuperのinitWithEntity:insertIntoManagedObjectContext:メソッドを呼び出さない限り、 =) –
Touche。よくやった:) – Tim
誰かがinitを上書きする理由を特定できない場合、上記のDaveのように、私は見つけたばかりです:ObjectiveResource(おそらく、他の非コアデータ依存の依存関係)サーバーレスポンスを非マーシャリングするとき)。これは、この正確な問題を回避するためにinitをオーバーライドする必要があるかもしれないことを意味します。 –