【发布时间】:2017-07-02 02:20:40
【问题描述】:
我最近在 iPhone 和模拟器上测试了我的 iPhone 应用程序。自从我第一次创建并添加我的 sqlite 文件以来,我对数据库进行了结构更改。我可以弄清楚如何将更改更新到其他模拟器的唯一方法是将我修改的版本实际粘贴到应用程序目录中。
这对模拟器来说很好,但我不知道 XCode 在将 sqlite 文件推送到设备时从哪里获取它。这是在哪里,所以我可以替换文件?或者,是否有另一种方法来更新 XCode 用于新设备的 sqlite 文件? (我已经尝试将新版本导入到我的项目中)。
更新:我从项目中删除了旧版本的 SQLite DB,并添加了新版本。我清理、重建,但 iPhone 仍在使用旧版本的数据库。
【问题讨论】:
-
据我所知,您应该只执行插入和更新。它会自动保存更改(或者当你关闭它时?)。
-
如果您将数据库包含在您的应用程序包中,它会在用户安装新应用程序时自动包含在内。您不应该在模拟器的文件系统中导航:这完全没有必要。只需运行/安装新应用程序,它就在那里。唯一的问题是您在应用程序代码中做了什么。 (例如,当用户运行应用程序时,通常我们有用于更新的 SQLite 数据库,此时我们将其从捆绑包复制到 Documents 并在那里打开它。)您必须向我们展示您如何打开/创建 SQL 数据库。另外,你没有使用 Core Data,对吧?
-
@Rob 如果“在应用程序包中包含数据库”是指将 sqlite 文件添加到我的项目中,那么我已经完成了。我什至删除了旧的 .sql 文件并添加了新文件,但它放在我的测试设备上的版本是旧文件。当您更新 SQLite DB 以进行更新时,如何在 XCode 项目中更新它?我在终端中使用 sqlite3 将列添加到表中,但仅添加到其中一个模拟器,因为我不清楚如何将更改传播到我正在测试的所有模拟器和设备。
-
假设这不是 Documents 文件夹中的数据库副本和捆绑包之间的一些简单混淆,我承认我遇到了 Xcode 对在 Xcode 之外编辑的文件感到困惑并且这些文件没有正确获取的问题在构建上更新。 (这发生在很久以前,我认为这个错误早就被修复了。)无论如何,当我遇到这个问题时,我找到了派生数据文件夹,退出 Xcode,删除派生数据文件夹的内容,然后重新启动 Xcode 和它再次起作用了。您可能想尝试一下。
-
所以当您对数据库进行更改时,您总是以编程方式进行吗?我想我可以试试..我不太明白你所说的“捆绑”是什么意思..那只是我项目中的文件吗?此外,我的开发计算机上是否有用于实际物理设备的派生数据文件夹?谢谢。