3

RestKitを使用して、ArticlesとArticlesに属する写真の関係をマッピングしようとしています。リソースを要求すると、両方のオブジェクトが適切に保存されますが、関係が持続しないようです。実際、ArticleモデルはPhotosセレクターにさえ応答しないようです(これは「duh」スポットかもしれませんが、完全なコードを提供します)。

StackOverflowで確認してフォーマットする方が簡単なため、すべてのコードを要点で提供しました。これが実際にご不便をおかけして申し訳ありません。

https://gist.github.com/3733334

そして、これがコアデータモデルの画像と設定された関係です(申し訳ありませんが、現在2つのハイパーリンクしか投稿できないため、それらを組み合わせる必要がありました)。

http://imageshack.us/a/img33/5039/stackoverflowissue.jpg

anArticle.photosを介して写真にアクセスしようとしたときのオブジェクト間の関係を除いて、すべてが正常に機能しているようです。セレクターが認識されません。写真モデルにコンビニエンスメソッドを設定して、記事IDが一致するすべての写真を返すようにしましたが、関係を作成するという考え全体が失われるため、これは理想的ではない解決策だと思います。

何か簡単なことが欠けているのではないかと思いますので、よろしくお願いします。

ありがとう!

4

2 に答える 2

1

もちろん、それは「Duh」エラーでした。地元の開発者の助けを借りた後、彼は、Article.hファイルのPhotos変数がNSArrayであり、RestKitによってマップされたオブジェクトを格納するためにNSSetに変更する必要があることを指摘しました。

于 2012-09-19T22:45:19.160 に答える
0

RestKitの異なるバージョン間にはいくつかの矛盾があります。最新のものを使用している場合は、https ://github.com/RestKit/RestKit/wiki/Object-mappingに示すようにマッピングを設定する必要があります。モデル固有のメソッドにエンティティクラスを使用する場合は、NSManagedObjectsにカテゴリを作成して、データモデルを変更したときに、それらを再生成できるようにします(これは、メソッドをカテゴリに抽出した後でのみ実行してください。.xcdatamodeldでエンティティを選択してください。エディタ->NSManagedObjectサブクラスの作成...)。

マッピングを、リモートAPIとの同期を担当するコントローラーに移動しました。

これも役立つはずです: http://andriyadi.me/logging-in-restkit/ 。

また、Core Dataガイドラインでは、逆の関係を設定する必要があることを強調しています(ただし、必須ではありません)。

私の意見では、エンティティの取得もより適切に行うことができます。私のプロジェクトには、(他のいくつかのCore Dataコンビニエンス機能の中で)エンティティと述語によってフェッチするNSObjectサブクラスシングルトンがあります。

- (NSArray *)fetchEntities:(NSString *)entity usingPredicate:(NSPredicate *)predicate {
    NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:entity];
    [request setPredicate:predicate];
    NSError *error = nil;
    NSArray *results = [self.managedObjectContext executeFetchRequest:request error:&error];
    if (error) {
        RLog(@"Error fetching entity %@ using predicate %@", entity, predicate);
        abort();
    }
    if ([results count] >= 1) {
        return results;
    }
    return nil;
}

NSStringsとして述語を渡すように変更することもできます。

補足:現在、私はRestKitとオブジェクトマッピングにも苦労しています:)。

于 2012-09-18T10:50:57.080 に答える