我是mac app开发的新手。创建了一个os x app,它可以跨网络同步数据,app必须将数据存储在sqlite db文件的表中。 info.db
部署应用程序时,带有空表的db文件将位于应用程序内部,例如
/Applications/myapp.app/somehere/info.db
第一次运行的应用程序是否应将此info.db移动到其他数据文件夹?或临时目录,在插入数据之前?或者我应该直接提交对应用程序包内的文件的更改?此外,当用户更新以前版本存储的info.db中的信息时,新版本将使用该信息。那么,你能告诉我应该如何部署它吗?
谢谢,
答案 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
来源