我希望我的应用在启动时检查核心数据存储。如果商店为空,它将添加两个项目。实现这个的最佳方法是什么?
我可以将以下代码放在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];
}
我搜索了其他文章,但似乎没有人给我一个我能理解的答案。
答案 0 :(得分:1)
从managedObjectContext
viewDidLoad
获取信息很好。
如果在cellForRowAtIndexPath
中填充self.monitorItemArray
中的单元格而没有理由调用reloadData
(这基本上会删除整个表格视图并从头开始重新绘制 - 这是当视图以任何方式出现在屏幕上时会发生什么......)。
如果您同时显示来自网络服务的信息,您可以在回复方法中致电reloadData
以替换现有数据与来自网络。否则 - 如果只有核心数据的信息显示在表格视图上 - 不需要reloadData
(或者仅在managedObjectContext
中的信息在屏幕上显示表格视图时发生变化的情况下)