macos - 在 OS X 上,将 SQLite 数据库放在哪里以防止其在更新期间被覆盖?

标签 macos sqlite qt osx-lion osx-mountain-lion

我正在开发我的第一个 OS X 应用程序,该应用程序将通过 Mac App Store 分发。

该应用程序使用了 sqlite 数据库,我目前将其保存在与其余应用程序文件依赖项相同的位置。

我正在使用 Qt Framework 来开发应用程序。

遵守 App Store 规则的范围;

  • 在哪里可以找到数据库文件,以免在应用程序更新期间被覆盖?

  • 我应该如何构建 .app 文件夹和所有依赖项?

谢谢。

最佳答案

您的问题意味着您正在写入 sqlite 数据库,这是一个坏主意,因为应用程序将存储在用户可能无权写入访问的位置 (/Applications) .

您应该做的是在第一次使用时(或当您检测到它不存在时)将数据库复制/创建到用户可写区域(应用程序容器的 Documents 文件夹即可),并且从那里使用它。

编辑:为了获取文档目录,请使用以下代码:

NSString *documentDir = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];

这将为您提供应用容器 Documents 目录的位置,而不是应用沙盒时用户的 Documents 目录:

~/Library/Containers/com.yourdomain.yourapp/Data/Documents

关于macos - 在 OS X 上,将 SQLite 数据库放在哪里以防止其在更新期间被覆盖?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14123126/

相关文章:

c++ - 断开qt定时器进行单元测试

c - libsasl2 在 OSX Yosemite 上是否损坏?缺少 sasl_client_done

android - 如何将数据库恢复到原始目录?

c++ - 多线程模式下的sqlite3 : what exactly is unsafe to perform?

c++ - 从 QAudioBuffer 填充 QByteArray

c++ - 使用 QSslCertificate 在 Qt 中正确导入 pkcs12

macos - 如何将项目添加到 Mac OS X 中的 Finder 上下文菜单?

macos - 工具提示闪烁并消失

java - 部署 Java WAR 文件时出错 : SEVERE: Exception fixing docBase for context

sql - 按 ID 分组,只为每个选择最新的记录