需要一些有关核心数据的知识-NSManagedObject的用法

时间:2019-01-03 22:52:39

标签: ios sorting core-data filtering

关于通过Core Data将数据加载到应用程序中的一个简单问题-我已经实现了Core Data,并且该应用程序的运行几乎与开始使用它之前一样。

简而言之,当应用启动时,我将所有实体提取到Manager脚本中,该脚本将每个对象存储到不同的数组中,当应用使用这些对象时,Manager脚本会将这些数组传递给其他脚本。

我的问题是,在使用Core Data时,这似乎是一种不好的方法吗?我应该只在脚本需要它们时从实体获取实体还是从一开始就对其进行良好的“预获取”?该数据受到一定程度的限制,并且在运行时不会更改。

此外,由于我在Manager脚本中将所有实体放置在不同的数组中,因此在脚本需要完成某些操作时,我将通过谓词对这些数组进行排序/过滤。 (这意味着我从不使用带有谓词的Core Data提取,因为所有数据都已经在Manager的数组中可用)

App已经完成,只是在尝试提高性能,并通过添加Core Data进行了巨大的提升。这是我目前的最后一个问题,由于我以前从未使用过Core Data,因此我不确定答案。

谢谢

1 个答案:

答案 0 :(得分:0)

很好。

预取存在三个主要缺点:

  1. 您可能会占用过多内存并崩溃。
  2. 如果删除了实体并保留了指向它的指针,则当您尝试使用该ManagedObject时,应用程序将崩溃
  3. 如果有大量数据,加载可能会花费很长时间。

您说过“此数据一定程度上是有限的,并且在运行时不会更改”,因此似乎所有这些问题都不适用。

话虽如此,但我不确定在此设置中您是否真的会从核心数据中获得任何好处。总体而言,核心数据可以很好地扩展,但是您的设置不能。您可以轻松地将所有信息存储在文件中,然后在应用启动时将其全部加载到内存中。我相信您会从问题中未提及的核心数据中获得其他好处。