0

私は、コア データを使用して、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で見つけることができるすべての例や提案を試しました. 誰かが新しい提案をしてくれることを願っています。ありがとう!

4

1 に答える 1

0

私のコメントから

代理人を設定しましたNSFetchedResultsControllerか?

fetchedController.delegate = self;

于 2013-01-06T15:02:12.583 に答える