从iPhone的核心数据在tableview中逐个添加单行
问题描述:
我正在研究RSS阅读器代码,其中的文章被下载并且可以脱机查看。 问题是只有在所有的文章下降后,包含标题的tableview才会更新。核心数据被使用。所以每次保存NSobjectcontext时,都会调用[self tableview updatebegins]。表通过fetchcontroller核心数据进行更新。从iPhone的核心数据在tableview中逐个添加单行
我试着保存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];
}
答
如果你用的NSFetchedResults
控制器,只需使用其委托的方法
- (void)controllerDidChangeContent:(NSFetchedResultsController *)controller;
如下:
- (void)controllerDidChangeContent:(NSFetchedResultsController *)controller {
// In the simplest, most efficient, case, reload the table view.
[self.tableView reloadData];
}
每次更新基础NSManagedObjectContext
,该表将自动更新了。
我试过你的代码。当元素被推送时(保存上下文),但函数controllerDidChangeContent确实被调用,但tableview没有被更新。请帮忙。 – user336685 2010-05-10 14:11:18
我已经添加了更好理解的代码。 – user336685 2010-05-10 14:11:42