外部データソースを使用するiPhone用のCore Dataアプリケーションを作成しようとしています。私は実際にオブジェクトを保持するためにCore Dataを使用するのではなく、オブジェクトライフサイクル管理のために使用しています。ローカルデータにCore Dataを使用する方法についてはかなり良い考えがありますが、リモートデータに関してはいくつかの問題があります。私は例としてFlickrのAPIを使用します。Core Dataでリモートデータにアクセスするためのパターン?
まず、最近の写真のリストを言う必要がある場合は、外部のデータソースから取得する必要があります。リストを取得した後、各写真の管理オブジェクトを繰り返して作成する必要があるようです。この時点で、私は自分のコードで作業を続け、標準的なCore Data APIを使ってフェッチリクエストを設定し、例えば犬についての写真のサブセットを取得することができます。
しかし、ユーザーの写真のリストを引き続き検索したい場合はどうすればいいですか?これらの2つのデータセットが交差する可能性があるため、既存のデータに対してフェッチ要求を実行し、既に存在するものを更新してから新しいオブジェクトを挿入する必要がありますか?
- 古いパターンでは
、私は単純にこれらのデータセットごとに別々のデータ構造を持っており、それらを適切にアクセスします。 recentPhotosセットとusersPhotosセット。しかし、Core Dataの一般的なパターンは1つの管理対象オブジェクトのコンテキストを使用するように思われるので、データをメインプールにマージする必要があるようです(間違っている可能性があります)。しかし、それは写真のリストを取得するだけのオーバーヘッドのように思えます。異なるセットの管理対象オブジェクトコンテキストを個別に作成する必要がありますか?コアデータをここでも使用する必要がありますか?
Core Dataについて魅力的だと思うのは、(Webサービスの)以前は、特定のデータをリクエストしてリクエストでフィルタリングしたり、コードでフィルタリングしたり、 。コアデータでは、オブジェクトのリストを取得してプールに追加し(必要に応じて古いオブジェクトを更新する)、それに対してクエリを実行できます。しかし、このアプローチでは、オブジェクトを外部から削除すると、古いデータを保持しているので、わかりません。
ここでベースオフですか?リモートデータとコアデータを処理するためのパターンがありますか? :)私は彼らがそれをやったと言っている人々のいくつかの記事を見つけた、それは彼らのために働くが、例の方法ではほとんどありません。ありがとう。
あなたはもっと具体的にお答えできますか? '外部データソースを使用する'は非常に曖昧です。外部データベースの一部をローカルでミラーリングするように思えます。宣伝されたローカル変更を行う必要がありますか?紛争はどうですか?これは難しい問題であり、詳細がわかると指示が示唆されます。 –
おそらく古くなったスレッド、私はバックグラウンドスレッドで物事を取得し、それらを永続的なストアに書き込もうとしていて、そこからメインスレッドに通知が波及するように誘惑されるでしょう。それが実現すれば – bshirley