これまでのところ、アプリの非常に単純なベースがあります。ユーザーが人の名前と名前を入力し、保存ボタンをタップすると、次のコードが実行される2つのテキストフィールドがあります。
person = (Person *)[NSEntityDescription insertNewObjectForEntityForName:@"Person" inManagedObjectContext:managedObjectContext];
NSError *err;
if (![managedObjectContext save:&err])
{
// Update to handle the error appropriately.
NSLog(@"Unresolved error %@, %@", err, [err userInfo]);
exit(-1); // Fail
}
オブジェクトがありPerson
ます。ユーザーがテキストフィールドに入力するときに名前と名前を設定し、保存を選択するときにオブジェクトを挿入します。ただし、保存後、名前と名前はとして表示され(null)
ます。すべてのアウトレットとメソッドが正しく接続されており、名前/オブジェクトを設定して保存するためにすべてのコードが実行されています。
ただし、マスタービューでこれを行うと、次のようになります。
Person *p = (Person *)[NSEntityDescription insertNewObjectForEntityForName:@"Person" inManagedObjectContext:managedObjectContext];
PersonDetailViewController *vc = [self.storyboard instantiateViewControllerWithIdentifier:@"PersonDetail"];
vc.managedObjectContext = fetchedResultsController.managedObjectContext;
vc.person = p;
そして、オブジェクトを保存します。値はではありません(null)
。新しいオブジェクトを作成してから削除するのではなく、保存することを決定した後に新しいオブジェクトを挿入しようとしています。キャンセルすると、よりクリーンで論理的なコードになります。