2013-07-08 66 views
2

我是mac應用程序開發新手。創建了一個os x應用程序,可以跨網絡同步數據,應用程序必須將數據存儲在sqlite數據庫文件的表內。 info.db如何在可可應用程序中部署數據庫文件

當應用被部署空表數據庫文件將位於裏面的應用程序,例如

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

應在第一個應用程序運行將此info.db移動到其他數據文件夾?或臨時目錄,在它插入數據之前?或者我應該直接提交更改到應用程序包內的文件?當用戶更新從先前版本存儲的info.db中的信息時,也會被新版本使用。那麼,你能否告訴我們應該如何部署?

感謝,

回答

1

您不能更新應用程序包,所以你必須空數據庫複製到在第一次運行一個用戶目錄。如果您希望將此應用發佈到Mac App Store,那麼它必須是沙盒,這意味着您可以將數據庫放置在應用容器文件夾中。

您可以使用NSHomeDirectory()獲取應用程序容器文件夾,無論您是否使用沙盒應用程序都可以使用該文件夾。

+0

優秀的明確的答案。我目前不在Mac應用商店部署,但可能在未來。目前只能通過.pkg安裝程序進行安裝。猜猜我可以在用戶主目錄中爲我的應用程序數據創建一個子文件夾。 – Ahmed

+0

據我所知,你可以更改應用程序文件/容器中的文件,但是......這不是建議的,它會打破應用程序簽名,你將被拒絕提交給App Store。 – d00dle

+0

@ d00dle我認爲你正在將應用程序容器與應用程序包混淆。 – trojanfoe

0

您不想在用戶的主文件夾中創建新的目錄。 Apple爲各種用途定義了「標準」目錄。你的情況聽起來像你想要的應用程序支持。

將空數據庫文件複製到應用程序支持目錄。您可以從得到的NSFileManager的路徑/ URL到應用支持,就像這樣:

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

然後你的應用程序的包ID添加到該路徑,並創建應用程序支持自己的文件夾。

有蘋果公司的網站上的示例代碼和一個更深的解釋在這裏: Locating Items in the Standard Directories

來源

相關問題