为什么我可以在viewDidAppear中访问Core Data实体,但不能在viewDidLoad中访问?

时间:2013-01-26 11:13:48

标签: ios objective-c core-data

我有一个UITableViewController子类,当我尝试从viewDidLoad中获取一些实体时,我得到一个空数组。但是当我在viewDidAppear中使用相同的代码时,我得到了这些实体!怎么样?

1 个答案:

答案 0 :(得分:0)

您使用的是NSFetchedResultsController吗?这是使用Core Data填充表视图的推荐(且最简单)方法。您不必关心获取时间,因为结果控制器会为您管理。

如果没有FRC,您负责填充表格。根据您的设置,即如何创建视图控制器,所有必要的部分(包括托管对象上下文,数据数组或表视图本身)可能尚未完全加载到时间{{1}跑。通常,viewDidLoad最适用于从笔尖或故事板加载的视图控制器。您在viewDidLoad或某些此类方法中提供了必要的属性,prepareForSegue:可以使用这些属性。

不过,你应该选择FRC。它将通过数据源方法或多或少懒惰地进行获取。这也是性能和内存管理的最佳选择。