1

首先,我没有使用 Core Data,我只使用 SQLite。

我将数据保存在表中,然后通过打开应用程序并使用 SQLiteStudio 查看数据来查询它们。我什至创建了一个 LOG 来检查数据是否已保存,是的,它已保存。但是当我停止并再次运行模拟器进行咨询时,没有更多的数据!

Xcode 每次都会覆盖数据库吗?还是发生了超出我有限知识范围的其他事情?

4

1 回答 1

4

在不了解您的应用程序如何设置、如何配置应用程序以构建或它如何在相关 SQLite DB 文件上运行的更多信息的情况下,我只能提供一些您可以查看的内容的指针您的代码和构建配置可能是您的幻像删除的来源。当然,如果您有其他信息要提供,我很乐意编辑我的答案!

案例 1:“创建数据库”总是在运行?

可能会让您的应用程序出错的一件事是导致决定创建新的 SQLite DB 文件或查看/打开现有文件的决定。如果创建空数据库的代码始终在运行,那么每次您的应用启动时,您的旧数据库文件都会被空白数据库覆盖。

案例 2:使用 'starter' 或 'template' 空数据库?

有时开发人员可能会提供一个空白数据库,其中包含初始数据库模式(通用表和结构)以及一些默认或示例数据。如果您的应用程序这样做,那么导致决定应用该默认数据库的逻辑可能总是被意外触发?如果是这样,使用 NSUserDefaults 来记录指示数据库已成功创建的布尔值可能是跳过“加载我的入门数据库”代码的途径。或者,您可以检查您的数据库文件是否存在,或者查看特定表的内容是否与模板数据不同等。

案例 3:“构建并运行”与“不构建运行”之间的不同行为

在 Product > Perform Action 菜单中有一个不太为人所知的选项,标签为“Run without Building”,它实质上将使用您刚刚在模拟器或设备上运行的应用程序版本启动另一个调试会话。当您使用此选项时,您是否看到数据库有任何不同的行为,或者它仍然是空白的?

案例 4:在 Xcode 调试会话之外直接在模拟器中运行时的不同行为?

“运行”操作的一部分是构建阶段,即使您的应用自上次执行以来没有更改(正如您在问题中所建议的那样),它也可能触发“复制资源”阶段。如果您提供的是库存“默认”或“模板”数据库文件,并且您的应用程序只是在第一次执行应用程序期间打开和编辑该“模板”,那么 Xcode 可能会在随后的“运行”中将其替换为干净的副本' 发生“复制资源”的操作。测试此途径的一种方法:

  1. 像往常一样使用 Xcode 构建并运行您的应用程序到模拟器。
  2. 执行一些会导致在应用程序数据库中创建或编辑数据的操作。
  3. 单击 Xcode 中的停止按钮以返回 Simulator 主屏幕。
  4. 双击模拟器上的主页按钮(或者如果没有主页按钮,请按 CMD+SHIFT+H 两次以调出多任务栏并强制退出您的应用程序。
  5. 检查并查看您的数据库文件中是否包含数据。
  6. 如果没有数据,那么将您的更改保存到数据库中存在问题,我们需要首先解决该问题。否则:
  7. 直接从 iOS 模拟器重新启动您的应用程序并执行不同的操作,这些操作会导致对数据库进行更多或不同的更改。
  8. 单击主页按钮返回 iOS 主屏幕。
  9. 如第 4 步中所做的那样强制退出您的产区。
  10. 检查并查看您的数据库文件数据是否已更改(但仍有数据)或已空白。

最后,请确保您遵循 Apple 关于在何处存储用户数据的指导,如果您无意中将某些内容存储在不正确的文件路径中通常不会导致数据空白,则可能会禁止写入数据,这可能被解释为您的数据被覆盖,特别是如果您在它仍然驻留在内存进程中时对其进行询问。表 1-1 中有一些关于文件路径的非常有用的指导:(http://developer.apple.com/library/ios/#documentation/FileManagement/Conceptual/FileSystemProgrammingGUIide/FileSystemOverview/FileSystemOverview.html

在 Mac 的硬盘上找到您的模拟器应用程序

为了彻底(您可能已经知道这一点!),iOS Simulator 应用程序存储在您的 Mac 硬盘驱动器上,就像您机器上的其他文件一样。他们的组织模仿了物理 iOS 设备。要访问您的应用程序及其数据:

  1. 打开一个新的 Finder 窗口。
  2. 按 CMD+SHIFT+G 或从“前往”菜单中选择“前往文件夹”。
  3. 将以下内容粘贴到“转到文件夹”框中,然后单击“转到”:~/Library/Application Support/iPhone Simulator/
  4. 选择与您构建的模拟器的 iOS 版本匹配的文件夹。
  5. 单击应用程序。
  6. 然后,您将看到零个或多个文件夹,出现的每个文件夹都有一串由连字符分隔的数字。浏览此列表,直到找到包含您的应用程序的列表。然后,您可以浏览此文件夹中的数据,并将数据复制到某个位置,以供 Mac 上的其他工具检查。
于 2013-04-17T07:07:45.237 回答