【问题标题】:Changes to sqlite in ios 7/XCode 5ios 7/XCode 5 中对 sqlite 的更改
【发布时间】:2013-09-30 04:52:39
【问题描述】:

我正在开发一个最初为支持 iOS 5.1/6.0/6.1 而构建的应用程序。我最近升级到 XCODE 5 并且 sqlite 'select' 查询现在都返回 null,尽管正确的数据库在那里,并且已经连接到并且表被识别。奇怪的是,该应用程序在所有模拟器 5.1-7.0 上都能完美运行,但在实际设备上却没有。我只有 5.1 设备可供测试。

我重新安装了 XCode 4,应用程序正在按预期在 iOS 5.1 设备上编译和运行。对 SQLITE 或编译器或 XCode 5 中的某些其他组件是否有任何更改会导致此问题?

如果有助于解决问题,可以提供代码。

【问题讨论】:

  • 代码可能会有所帮助。如果任何调用的结果不是SQLITE_OK(或SQLITE_DONE/SQLITE_ROW,在sqlite3_step 的情况下),您的代码是否记录sqlite3_errmsg?通常,无法解释的 SQLite 错误可以通过查看返回码和sqlite3_errmsg 来阐明。我知道 iOS 7 中的 SQLite 没有重大变化。我们中的许多人在 iOS 7 中使用 SQLite 时没有发生任何事故。
  • 我怀疑数据库实际上并不存在,在文件系统中丢失了,或者您正在尝试使用捆绑包中的数据库。
  • Hotlicks - 我使用了“iFile”来检查应用程序的文件,并且可以确认数据库在那里。它在 Documents 文件夹以及 .app 包中。我还检查了数据库,可以确认数据和表在数据库中。数据库已成功连接,只是选择查询返回 null。
  • @Rob - 我没有部署到 iOS 7。在这两种情况下我都部署到 5.1。唯一的区别是 XCode。我在使用 XCode 4 编译时工作,但在使用 XCode 5 编译时不工作,选择查询返回 null,尽管 db 在那里并且它已连接到。我将尝试使用更多 sqlite3_errmsg 来尝试识别故障并发布一些代码。

标签: ios objective-c xcode sqlite ios7


【解决方案1】:

验证 sqlite 的文件大小,我有同样的问题,但我解决了通过 Finder 将预填充的 .sqlite 复制到 Documents 目录 /用户//图书馆/应用程序支持/iPhone模拟器//应用程序//文档。但首先让核心数据创建错误的sqlite,然后替换为正确的sqlite创建的文件。

似乎 Xcode 不会将预填充的 sqlite 文件复制到主包,而是基于核心数据模型创建一个新的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多