2

Macアプリ開発初心者です。ネットワーク全体でデータを同期する os x アプリを作成した場合、アプリは sqlite db ファイルのテーブル内にデータを保存する必要があります。info.db

アプリがデプロイされると、空のテーブルを含む db ファイルがアプリ内に配置されます。

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

アプリは最初の実行時にこの info.db を他のデータ フォルダーに移動する必要がありますか? または一時ディレクトリ、データを挿入する前に?または、アプリバンドル内のファイルへの変更を直接コミットする必要がありますか? また、ユーザーが以前のバージョンで保存された info.db からの情報を更新すると、新しいバージョンで使用されます。では、これをどのように展開するべきか教えていただけますか?

ありがとう、

4

2 に答える 2

1

アプリ バンドルを更新することはできないため、最初の実行時に空のデータベースをユーザー ディレクトリにコピーする必要があります。このアプリを Mac App Store に公開する場合は、サンドボックス化する必要があります。つまり、データベースを配置できる唯一の場所はアプリ コンテナー フォルダーです。

を使用してアプリ コンテナー フォルダーを取得できますNSHomeDirectory()。これは、アプリをサンドボックス化するかどうかに関係なく機能します。

于 2013-07-08T15:56:53.793 に答える
0

ユーザーのホーム フォルダに新しいディレクトリを作成したくありません。Apple は、さまざまな用途のために「標準」ディレクトリを定義しています。あなたの場合、アプリケーション サポートが必要なようです。

空のデータベース ファイルを Application Support ディレクトリにコピーします。次のように、NSFileManager から Application Support へのパス/URL を取得できます。

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

次に、アプリのバンドル ID をそのパスに追加し、Application Support に独自のフォルダーを作成します。

サンプル コードと詳細な説明が Apple のサイトにあります: Locating Items in the Standard Directories

ソース

于 2013-07-14T18:52:38.933 に答える