UITableView中的核心数据延迟加载 - 在设备和模拟器上的不同点调用awakeFromFetch

时间:2011-08-26 12:49:45

标签: iphone objective-c uitableview core-data

我遇到了核心数据问题,这些数据在设备和模拟器上似乎表现不同。

我有一个非常简单的UITableView,它是从核心数据模型驱动的,苹果提供的模板有很小的变化。

在模拟器上,一切正常。在设备上,我在表视图中具有正确数量的单元格以匹配数据库中的托管对象的数量,但单元格本身不包含任何数据。我在单元格中有几个标签,这些标签来自托管对象的瞬态属性,这些标签是空白的。

我有关于托管对象子类的awakeFromFetch方法的NSLog语句,以及我的表视图委托的cellForRowAtIndexPath方法。

在模拟器上,在cellForRowAtIndexPath之前调用awakeFromFetch,所以一切都很好。在设备上,它是另一种方式,所以单元格是空白的,直到我强制通过向上和向下滚动来重新显示它们。

为什么会发生这种情况,我应该采取哪些措施来防止这种情况发生?我可以在单元配置代码中查看托管对象是否是故障,但是如何强制故障触发?或者我应该做些什么?

2 个答案:

答案 0 :(得分:1)

我已经通过首先通过调用托管对象的持久属性来配置我的单元来解决这个问题。这会触发故障并填充其余的字段。瞬态属性正在awakeFromFetch中填充,并且在触发故障之前不会调用此属性。为什么这在设备和模拟器上有所不同,我不知道。

答案 1 :(得分:0)

显而易见,您需要向上和向下滚动以显示单元格的值。因为在iPhone上,内存太低而无法提供性能......

可能有一种使用多线程或GCD(Grand Central Dispatch)的解决方案。 使用线程,然后通知您的表已将数据下载到内存中并准备好在表视图中显示,然后更新表...

供参考,请参阅this link