核心数据子tableview不爽快

时间:2013-01-06 02:54:50

标签: core-data nsfetchedresultscontroller nsmanagedobjectcontext

我使用核心数据有一个(部队)到多个(成员)关系。我可以成功添加和删除部队。

一旦部队被创建,当我从桌面视图中点击一个部队时,它会加载一个新的部队成员表。我可以使用正确的部队作为父级成功添加到成员表。使用NSLog,我可以看到添加了成员​​。但是,在我返回并添加新队伍之前,成员表不会重新加载并且新成员不会保存。似乎上下文实际保存的唯一时间是添加新队伍的时间。当添加新的部队时,所有添加的成员将出现在他们的正确部队之下。完全关闭并重新启动应用程序不会强制保存成员。

我尝试将这两种方法添加到insert方法中:

[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中可以找到的每个示例或建议。我希望有人有新的建议。谢谢!

1 个答案:

答案 0 :(得分:0)

从我的评论中

您是否为NSFetchedResultsController设置了代理?

fetchedController.delegate = self;