8

sqliteのラッパーにiCloudサポートを提供したいと思います。coredataを使用していません。

どのようにiCloudを有効にするのだろうか。データベースの内容は常に変更されます(請求用です)。また、可能であれば、ある種のバージョン管理を行うこともできます。

これを行うために使用できるサンプルはありますか?

4

2 に答える 2

7

簡単な答えはノーです。あなたが疑ったようにコアデータを使用する必要があります。Appleは、sqliteはサポートされていないと述べています。

編集:iOSアプリケーションプログラミングガイドの「データベースと組み合わせたiCloudの使用」にあるiCloudのセクションを確認してください。

SQLiteデータベースでiCloudを使用できるのは、アプリがCoreDataを使用してそのデータベースを管理している場合のみです。SQLiteインターフェースを使用したiCloudのライブデータベースファイルへのアクセスはサポートされておらず、データベースが破損する可能性があります。ただし、コアデータ構造を設定するときにいくつかの追加手順を実行する限り、SQLiteに基づいてコアデータストアを作成できます。特別な変更を加えることなく、他のタイプのコアデータストア(つまり、SQLiteに基づかないストア)を引き続き使用することもできます。

于 2011-10-17T20:35:59.530 に答える
7

SQLiteデータベースは破損する可能性があるため、iCloudコンテナに入れるだけでは不十分です。(SQLite DBを変更すると、一時ファイルが作成されて名前が変更されるため、同期プロセスがそれらのファイルのコピーを開始すると、データベースが破損します。)

Core Dataに移動したくない場合は、Core Dataが行うことを実行できます。つまり、データベースをドキュメントフォルダーに保存し、トランザクションログをiCouldコンテナーに保存します。データベースを変更するたびに、それらの変更をログファイルに追加するので、それらを再生して、他のデバイスで同等の変更を加えることができます。

これは非常に複雑になります。ログ/応答ロジックを正しく取得する以外に、冗長な変更を統合し、定期的にログをデータベースの完全なコピーに折りたたむ必要があります。

アプリケーションの知識を活用できれば、ソリューションの開発に時間がかかる可能性があります(一般的なケースでは、Core Dataが問題を解決する必要があります)。たとえば、請求書を個別のファイルとしてクラウドコンテナ(テキスト、プロパティリスト、XML、JSONなど)に保存し、データベースの変更に応じて書き出し、システムが作成または変更したと通知した場合にのみ請求書をインポートできます。

要約すると、Core Dataに移行するか、同期ソリューションを自分で作成するかを選択できます。どちらが最適かは、アプリケーションの詳細によって異なります。

于 2011-11-15T19:36:54.497 に答える