最近、iCloud と Core Data の問題、および Apple の API が現在 iOS 5 とおそらく iOS 6 でどのように壊れているかについて多くの議論がありました。
Apple の Core Data API の現在の状態を考えると、iCloud を使用して複数のデバイス間で確実に同期することは可能ですか?
もしそうなら、あなたはこれをどのようにしますか?そうでない場合は、別のアプローチをお勧めします。
このブログ投稿は、このアプローチを試みている開発者の苦労に関する一連の最近の記事へとあなたを導きます。
私自身の理解と経験から、それは実行可能であると信じていますが、「無料で」何でも手に入るという考えに同意しないでください. データ モデルによっては、文書化されたコア データ/iCloud アプローチを使用するよりも、永続ストア全体をドキュメントとして同期する方がよい場合があります。
すでに Core Data に慣れている場合は、もっとうまくいくかもしれません。いくつかの重要なケースを処理する方法をよく考えてください。
1 つは、ユーザーが iCloud アカウントからサインアウトした場合の対処方法です。これが発生すると、ローカルのユビキタス永続ストアが削除されます。ユーザーが自分のデータに引き続きアクセスできることが理にかなっている場合は、ローカル ストレージでコピーを管理し、ユーザーが再度サインインしたときの再同期を管理する必要があります。
もう 1 つの理由は、変更がデフォルトで反映されるのが明らかに非常に遅い可能性があることです。そのため、ユーザー エクスペリエンスの低下を回避するために十分な情報を迅速に反映するために、キー値ストアなどの代替メカニズムを検討することをお勧めします。
競合の管理はおそらく最も困難です (モデルによって異なります)。フレームワークは競合を通知するメカニズムを提供しますが、それらを解決するメカニズムを提供するのはあなた自身であり、競合通知が信頼できない可能性があるという報告があります (リンクされた記事を参照)。これはラグと強く関連しているようです。更新中。
要するに、実際のサポートはかなり骨の折れるものであり、非常に防御的にコーディングする必要があるということを理解すれば、チャンスがあるかもしれません。良いレシピはありませんので、うまくいった場合は、戻ってきて何がうまくいくか教えてください!
それはあなたが何をしたいかによります。ここで説明されているように、コア データと iCloud の統合には 2 つのタイプがあります。
iCloud と統合する Core Data ベースのアプリケーションには、大まかに次の 2 種類があります。
アプリケーションが通常 1 つの永続ストアを持ち、ストアからのデータがアプリケーション全体で使用される、ライブラリ スタイルのアプリケーション。このスタイルのアプリケーションの例は、音楽と写真です。
ドキュメント ベースのアプリケーション。アプリケーションの有効期間中、さまざまなドキュメントがさまざまなタイミングで開かれる可能性があります。このスタイルのアプリケーションの例は、Keynote と Numbers です。
ライブラリタイプを使用している場合、この記事は、発生する多くの問題について説明するシリーズの最初の記事です: http://mentalfaculty.tumblr.com/post/23163747823/under-the-sheets -with-icloud-and-core-data-the-basics .
今年の wwdc のセッション 218 (ドキュメント ベースの場合) または 227 (ライブラリ スタイルの場合) もチェックできます。
iCloud API を使用したドキュメントの操作に関する Apple 開発者向けチュートリアルは、開始するのに適した場所かもしれません。
3 番目の iOS アプリでは、iCloud ドキュメント ストレージ API を紹介します。これらの API を使用して、ユーザーの iCloud ストレージにファイルを保存および操作します。