【问题标题】:Copying iPhone CoreData files from one project to another将 iPhone CoreData 文件从一个项目复制到另一个项目
【发布时间】:2012-02-01 14:11:53
【问题描述】:

我正在尝试创建 2 个应用程序,一个构建持久存储,另一个使用它。

到目前为止,我已经构建了一个使用 CoreData 成功地从 XML 文件构建数据库的应用程序。所以这个项目包含数据模型、实体的 .h/.m 文件等。

我现在正尝试通过将数据模型文件、与实体相关的 .h/.m 文件和 sqlite 文件复制到该项目(通过添加现有文件)来使第二个应用程序能够读取该 .sqlite 文件。

代码执行,但始终无法在数据库中找到任何对象。

在尝试复制这些文件时是否有任何限制或正确的步骤?

【问题讨论】:

    标签: iphone core-data


    【解决方案1】:

    这里的解决方案看似简单。

    只需将您的 .xcdatamodel 文件从一个项目复制到另一个项目,然后当您第一次在模拟器中运行您的应用程序时,它将为该应用程序创建一个 Documents 文件夹。只需将保存的 .sqlite 或 .binary 文件放入设备上的 yourApp/Documents 目录即可。 您可以在“~user/Library/Application Support/iPhone Simulator”中找到模拟器目录。

    您还可以通过拖入和拖出管理器来下载、编辑和上传已配置 iPhone 上的 myApp 目录。查看应用程序列表。

    iPhone 不支持带有核心数据的 xml 存储,仅支持 sqlite 或原子(二进制)。 sqlite 存储对于大多数应用程序来说是迄今为止更好的选择,因为它不必在运行时全部加载到内存中。

    这是你的意思吗?

    【讨论】:

    • 谢谢!我将 .xcdatamodeld 包从一个项目复制到另一个项目(使用不同的名称)。我什至重命名了文件和其中的.xcdatamodel 文件(显示包内容)以匹配另一个项目的名称,它似乎仍然可以正常工作。有点可怕,因为这对我来说都是二进制的。我希望有一些方法来区分文件。希望这些文件不包含任何特定于项目的内容(如项目名称)。确保设置 Core Data 堆栈的代码使用新名称。而且,您可能希望在再次运行之前删除该应用程序,以便它可以重新创建 SQLlite 文件。
    【解决方案2】:

    我认为(不是 100% 肯定)在您的应用 plist 中,如果您将应用包名称设置为相同的东西,它们将共享资源,因为设备会认为它们是同一个应用...

    【讨论】:

      【解决方案3】:

      我认为这不会按您希望的方式工作。在 iPhone 上,每个应用程序都在自己的“沙箱”中运行,一个应用程序编写另一个应用程序可以读取的文件实际上是不可能的。

      【讨论】:

      • 但我相信如果他们有相同的捆绑路径,他们将共享资源
      • 但是它们被认为是同一个应用程序
      • 其实我应该在我的原帖中更清楚。我要做的是在模拟器中运行一个应用程序,以从大量 XML 文件中创建一个数据库(持久存储)。然后,将数据模型 + 数据库和实体相关的 .m/.h 文件复制到将主要读取该数据库的实际应用程序中。所以一旦在实际设备上,我只是在第二个应用程序中工作。那有意义吗?感谢您的帮助!
      【解决方案4】:

      真的是两个不同的项目,还是同一个项目中的两个目标?这似乎更有意义,然后您可以在实体对象发生变化时共享它们。

      【讨论】:

      • 目前我真的将它们作为 2 个不同的项目。一个是“Data Store Creator”,它将实体从 XML 加载到持久性 SQLite 存储中,另一个是实际的应用程序。
      【解决方案5】:

      为了将核心数据文件从一个项目复制到另一个项目,我首先创建了一个支持核心数据的新项目,然后我打开了前一个核心数据文件的内容,除了根标签之外,将所有子标签粘贴到新核心数据中新项目中的文件。 以前我试图在新项目中删除coredata文件,复制粘贴上一个并更改其名称,但它不起作用。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-01-04
        • 1970-01-01
        • 2021-11-22
        • 2012-01-13
        • 1970-01-01
        • 2018-03-24
        • 2017-12-16
        • 1970-01-01
        相关资源
        最近更新 更多