我正在研究RSS阅读器代码,其中文章可以下载并且可以离线查看。 问题是只有在所有文章下载后,包含标题的tableview才会更新。使用核心数据。因此,每次保存NSobjectcontext时,都会调用[self tableview updatebegins]。表格将通过fetchcontroller核心数据进行更新。
每次保存文章时我都尝试保存NSobjectcontext,但是没有更新tableview。我想要一个类似于instapaper tableview的机制,其中文章得到保存,tableview立即更新。如果您知道解决方案,请提供帮助。提前谢谢。
添加代码以便更好地理解
AppDelegate.m包含以下代码
- (void)feedSuccess:(ZSURLConnectionDelegate*)delegate
NSManagedObjectContext *moc = [self managedObjectContext];
CXMLElement *root = [document rootElement];
CXMLElement *channel = [[root elementsForName:@"channel"] lastObject];
NSFetchRequest *request = [[NSFetchRequest alloc] init];
[request setEntity:[NSEntityDescription entityForName:@"FeedItem" inManagedObjectContext:moc]];
for (CXMLElement *item in [channel elementsForName:@"item"])
{
// push element in core data and then save context
//Save context
[moc save:&error];
ZAssert(error == nil, @"Error saving context: %@", [error localizedDescription]);
}
这将触发RootviewController.m中的表更改代码
- (void)controllerWillChangeContent:(NSFetchedResultsController*)controller
{
[[self tableView] beginUpdates];
}
答案 0 :(得分:0)
如果使用NSFetchedResults
控制器,只需使用其委托方法
- (void)controllerDidChangeContent:(NSFetchedResultsController *)controller;
如下:
- (void)controllerDidChangeContent:(NSFetchedResultsController *)controller {
// In the simplest, most efficient, case, reload the table view.
[self.tableView reloadData];
}
每次更新基础NSManagedObjectContext
时,表格也会自动更新。