从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,该表将自动更新了。

+0

我试过你的代码。当元素被推送时(保存上下文),但函数controllerDidChangeContent确实被调用,但tableview没有被更新。请帮忙。 – user336685 2010-05-10 14:11:18

+0

我已经添加了更好理解的代码。 – user336685 2010-05-10 14:11:42