添加后表未更新

时间:2014-05-04 05:20:54

标签: ios core-data

我希望我的应用在启动时检查核心数据存储。如果商店为空,它将添加两个项目。实现这个的最佳方法是什么?

我可以将以下代码放在viewDidLoad中吗?

- (void)viewDidLoad
{
    [super viewDidLoad];

    NSManagedObjectContext *managedObjectContext = [self managedObjectContext];
    NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] initWithEntityName:@"MonitorItem"];
    self.monitorItemArray = [[managedObjectContext
                              executeFetchRequest:fetchRequest
                              error:nil] mutableCopy];

    // If the core data is empty, populate it with the two compulsory items
    if ([self.monitorItemArray count] == 0)
    {
        self.AddMandatoryItems;
    }
    [self.tableView reloadData];

}

我搜索了其他文章,但似乎没有人给我一个我能理解的答案。

1 个答案:

答案 0 :(得分:1)

managedObjectContext viewDidLoad获取信息很好。

如果在cellForRowAtIndexPath中填充self.monitorItemArray中的单元格而没有理由调用reloadData(这基本上会删除整个表格视图并从头开始重新绘制 - 这是当视图以任何方式出现在屏幕上时会发生什么......)。

如果您同时显示来自网络服务的信息,您可以在回复方法中致电reloadData替换现有数据与来自网络。否则 - 如果只有核心数据的信息显示在表格视图上 - 不需要reloadData(或者仅在managedObjectContext中的信息在屏幕上显示表格视图时发生变化的情况下)