如何在cocoa app中部署数据库文件

时间:2013-07-08 15:51:07

标签: macos cocoa

我是mac app开发的新手。创建了一个os x app,它可以跨网络同步数据,app必须将数据存储在sqlite db文件的表中。 info.db

部署应用程序时,带有空表的db文件将位于应用程序内部,例如

/Applications/myapp.app/somehere/info.db

第一次运行的应用程序是否应将此info.db移动到其他数据文件夹?或临时目录,在插入数据之前?或者我应该直接提交对应用程序包内的文件的更改?此外,当用户更新以前版本存储的info.db中的信息时,新版本将使用该信息。那么,你能告诉我应该如何部署它吗?

谢谢,

2 个答案:

答案 0 :(得分:1)

您无法更新应用程序包,因此必须在首次运行时将空数据库复制到用户目录。如果您希望将此应用程序发布到Mac App Store,则必须使用沙盒,这意味着您可以将数据库放在应用程序容器文件夹中的唯一位置。

您可以使用NSHomeDirectory()获取应用容器文件夹,无论您是否对应用程序进行沙盒化,都可以使用该文件夹。

答案 1 :(得分:0)

您不想在User's Home文件夹中创建新目录。 Apple为各种用途定义了“标准”目录。在您的情况下,听起来您需要应用程序支持。

将空数据库文件复制到Application Support目录。您可以从NSFileManager获取Application Support的路径/ URL,如下所示:

[[NSFileManager defaultManager] URLsForDirectory:NSApplicationSupportDirectory
                             inDomains:NSUserDomainMask];

然后将应用程序的软件包ID添加到该路径,并在“应用程序支持”中创建自己的文件夹。

Apple的网站上有示例代码和更深入的解释: Locating Items in the Standard Directories

来源