【问题标题】:Where is the proper place to initialize data in a core data store?在核心数据存储中初始化数据的合适位置在哪里?
【发布时间】:2010-02-04 19:21:24
【问题描述】:

对于必须先插入大量数据才能让用户在首次启动时执行操作的 iPhone 应用,插入数据的正确位置(在代码中)在哪里?我正在查看几个表之间总共 700 到 800 条记录。

我最初尝试在applicationDidFinishLaunching: 中执行此操作。这在 iPhone 3gs 上运行良好,但在 3g 上导致了一致的首次启动崩溃。深入研究问题后,我发现在 3g 上,应用程序响应速度不够快(可能是因为它正忙于将大量数据转储到持久存储中),因此操作系统在假设它没有响应的情况下将其杀死。

为了解决这个问题,我将数据初始化过程从 appdidfinishlaunching 中移出,并从启动时显示的第一个视图控制器中生成了另一个线程。这在大多数情况下都有效,但每隔一段时间,应用程序就会因核心数据中的 134030 错误而崩溃,根据苹果常量参考,该错误是:

NSPersistentStoreSaveError

错误代码表示持久存储返回了保存操作的错误。此代码与权限问题等错误有关。

在 managedObjectContext 上调用save: 时会弹出此错误。

【问题讨论】:

    标签: iphone core-data initialization


    【解决方案1】:

    理想情况下,在开发结束时,您应该将此数据填充到 Core Data 存储中并将其添加到您的项目中。在第一次运行时,您从应用程序包中复制该存储作为用户的核心数据存储。这应该适用于您的情况。

    如果无法做到这一点,可以在后台线程上执行导入。

    【讨论】:

    • 优秀的解决方案,而且非常有意义。一位智者曾经告诉我,我患有“分析瘫痪”,这意味着我经常通过过度分析问题而忽略最简单的解决方案:) 非常感谢!
    猜你喜欢
    • 2011-05-30
    • 1970-01-01
    • 2017-01-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-03
    • 2015-07-18
    相关资源
    最近更新 更多