2

コアデータを使用するiOSアプリがあり、アプリケーションデータに初期データベースを入力しています。(SQLite)。その後、インターネットからデータをダウンロードしてデータベースを更新します。SQLiteデータベースをDocumentsフォルダーにコピーしています。Documentsフォルダ内のファイルは自動的にiCloudにバックアップされるため、Appleはこれは正しくないと言っています。それらのファイルがユーザー作成のものでない限り、彼らはそれを許可しません。

彼らが言及した解決策。

  1. ファイル(この場合はデータベース)にフラグを設定して、iCloudにバックアップしないようにします。ただし、これはiOS 5.1でのみ機能し、それはできません。iOS4以降をサポートする必要があります。(https://developer.apple.com/library/ios/#qa/qa1719/_index.html

  2. ファイル(この場合はデータベース)をtempフォルダーに保持します。しかし、彼らは、アプリの終了時に一時フォルダーに置いたものをすべて削除すると述べました。繰り返しますが、これは解決策ではありません。

しかし、私の質問は、それを削除しない場合、何が問題なのかということです。ユーザーがAppStoreから次のアプリバージョンに更新する場合、一時フォルダーはどうなりますか?コンテンツを削除しますか、それともアプリの更新時に一時フォルダーに何でも保持しますか?

または、この問題に対する他の解決策を持っている人はいますか?あなたの助けに感謝します。

4

3 に答える 3

1

私は実際にあなたの問題に対する2つの解決策を見ています。

  1. ファイルにフラグを設定するのは、iOS 5.1 以降の場合のみです。OS が 5.1 未満の場合は、設定しないでください。

  2. ディスクへのファイルの保存に関するドキュメントを読んでください。情報を保存できる場所は temp と Documents の 2 つだけではありません。上記のドキュメント ファイルでは、各フォルダーの内容がいつ削除されるかを説明する必要があります。

于 2012-05-27T05:06:53.573 に答える
0

ここでいくつかのドキュメントを読んだ後、私が正しいと感じる解決策があります。

--> iCloud と iTunes は、次のディレクトリの内容をバックアップしません:

/アプリ名.app

/ライブラリ/キャッシュ

/tmp

--> 次のディレクトリ内のファイルは、更新プロセス中に保持されることが保証されています。

/ドキュメント

/としょうかん

そのため、最初のデータベースをライブラリ/キャッシュにコピーしています。そして、そのデータベースの上で更新を行います。ただし、デバイスのディスク容量が少ない場合、キャッシュ フォルダーの内容が削除される可能性があると思います。その場合、データベースの存在を確認し、存在しない場合は再度コピーします。(予防措置として)。ただし、この場合、ユーザーはデータの一部を失う可能性があります。しかし、Apple はまだこれに関する適切なガイドを提供していません。

于 2012-05-27T10:33:18.977 に答える
0

Documents フォルダからデータベースを読み取ろうとしないのはなぜですか? それがあれば、素晴らしいです。あなたはビジネスをしています。そこにない場合は、アプリに付属していたバージョンよりも新しいバージョンをダウンロードしていないはずなので、代わりにアプリ バンドルでデータベースを開きます。

于 2012-05-27T06:12:29.767 に答える