私は、コア データを使用して、1 対多 (メンバー) の関係を持っています。部隊の追加と削除が成功しました。
軍隊が作成されると、テーブルビューから軍隊をクリックすると、その軍隊のメンバーの新しいテーブルが読み込まれます。正しい軍隊を親としてメンバー テーブルに正常に追加できます。NSLog を使用すると、メンバーが追加されていることがわかります。ただし、戻って新しい部隊を追加するまで、メンバー テーブルはリロードされず、新しいメンバーは保存されません。コンテキストが実際に保存されるのは、新しい部隊が追加されたときだけのようです。新しい部隊が追加されると、追加されたすべてのメンバーが正しい部隊の下に表示されます。アプリを完全に閉じて再起動しても、メンバーの保存は強制されません。
これらの両方を挿入メソッドに追加しようとしました:
[self.managedObjectContext save:nil];
[self.managedObjectContext refreshObject:newManagedObject mergeChanges:YES];
これを controllerDidChangeContent に追加しました
[self.managedObjectContext save:nil];
[self.tableView reloadData];
[[NSNotificationCenter defaultCenter] postNotificationName:@"ContextDidSave" object:self.managedObjectContext];
これを contextDidSave メソッドに追加しました。
[self.managedObjectContext mergeChangesFromContextDidSaveNotification:notification];
これを viewWillAppear メソッドに追加しました:
[self.tableView reloadData];
そして、これを viewDidLoad メソッドに:
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(contextDidSave:)
name:@"ContextDidSave" object:nil];
何か不足しているか、保存されていない理由があると確信しています。また、すべてのデリゲートを使用しました。
<NSFetchedResultsControllerDelegate, UINavigationControllerDelegate, UITableViewDelegate, UITableViewDataSource>
私はstackoverflowで見つけることができるすべての例や提案を試しました. 誰かが新しい提案をしてくれることを願っています。ありがとう!