【问题标题】:Need some knowledge on Core Data - NSManagedObject usages需要一些关于核心数据的知识 - NSManagedObject 用法
【发布时间】:2019-05-30 13:13:43
【问题描述】:

关于通过 Core Data 将数据加载到应用程序中的快速问题 - 我已经实现了 Core Data 并且应用程序几乎可以正常运行,就像我开始使用它之前一样。

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

我的问题是,在使用 Core Data 时,这似乎是一种不好的方法吗?我应该在脚本需要它们时获取实体还是从一开始就进行精细的“预取”?这些数据是有限的(在一定程度上)并且在运行时不会改变。

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

应用程序已经完成,只是试图提高性能,通过添加核心数据,有一个巨大的提升。这是我的最后一个问题(目前),我不确定答案,因为我以前从未使用过 Core Data。

谢谢

【问题讨论】:

    标签: ios sorting core-data filtering


    【解决方案1】:

    没关系。

    预取存在三个主要缺点:

    1. 您可能会占用太多内存并导致崩溃。
    2. 如果实体被删除并且您保留指向它的指针,则当您尝试使用该 managedObject 时应用程序将崩溃
    3. 如果数据很多,加载可能需要很长时间。

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

    话虽如此,我不确定您是否真的从此设置中的核心数据中受益。核心数据通常可以很好地扩展,但您的设置不会。您可以轻松地将所有信息存储在一个文件中,并在应用程序启动时将其全部加载到内存中。我相信您会从您的问题中未说明的核心数据中获得其他好处。

    【讨论】:

      猜你喜欢
      • 2023-03-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-25
      • 1970-01-01
      • 2012-08-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多