2

AFIncrementalStore を自分のプロジェクトに統合しようとしていますが、関係を機能させる方法を理解するのに苦労しています。

ドキュメントとページの 2 つのモデルがあるとします。ドキュメントには多くのページ (1 対多) があります。各モデルは、互いに逆の関係にあります。

だから私はできる:

myDocument.pages

また

myPage.document

ドキュメントに属するすべてのページを取得しようとしています。必要なメソッドを実装する AFIncrementalStore サブクラスと AFHTTPClient サブクラスがあります。

正しい REST URI が呼び出されていることがわかります (例: /documents/:id/pages)。また、ページがダウンロードされ、SQL データベースのページ テーブルに格納されていることも確認できます。

問題は、両者の関係が成り立たないことです。DB を見ると、外部キー列が空です。

また、 myDocument.pages を実行しても何も返されません。

新しいデータがフェッチされたときに、これら 2 つを手動でリンクする必要がありますか? AFIncrementalStore ソースを読んでいますが、何も突き出ていません。

考え?

4

1 に答える 1

3

数時間、または AFIS を 1 行ずつデバッグして読んだ後、動作するようになりましたが、REST API にいくつかの変更が必要でした。

最初に、API が次のようなものを返すようにしました (例)。

GET /documents/12/pages

Response:
{
    title: "My Title",
    body: "Some body text ..."
}

しかし、AFIS とうまく連携させるには、次のようにドキュメントへの参照を追加する必要がありました。

Response:
{
    title: "My Title",
    body: "Some body text ...",
    document: 
    {
        id: "12"
    }
}

CoreData でリレーションシップが適切に設定されている限り、AFIS はリレーションシップをループし、リレーションシップ「ドキュメント」を自動的に見つけて、返されたオブジェクトでそのキーを探します。サーバー キーがコア データ プロパティと一致しない場合は、AFIncrementalStoreHTTPClient プロトコル メソッドの 1 つをオーバーライドして、正しいオブジェクトを指定できます。

今のところ問題なく動いていますので、何かあったらまた報告します。

それが他の誰かを助けることを願っています。

于 2013-05-16T23:28:03.780 に答える