2013-07-13 1 views
5

AFIncrementalStoreを使用してコアデータモデルがあり、そのモデルのオブジェクトのリストを取得するために複数のREST APIエンドポイントがあるとします。私はそうのようAFHTTPClient-requestForFetchRequest:withContext:を上書きすることができます。AFIncrementalStoreで単一のタイプのエンティティをフェッチするために複数のURLリクエストを使用するにはどうすればよいですか?

- (NSURLRequest *)requestForFetchRequest:(NSFetchRequest *)fetchRequest 
         withContext:(NSManagedObjectContext *)context { 

    NSMutableURLRequest *mutableURLRequest = nil; 
    if ([fetchRequest.entityName isEqualToString:@"Post"]) { 
     mutableURLRequest = [self requestWithMethod:@"GET" path:@"/posts/foo" parameters:nil]; 
    } 
    return mutableURLRequest; 
} 

このスニペットでは、私は/posts/fooPostオブジェクトを取得、私はまた/posts/barから別のセットを取得する必要があります。

どうすればいいですか?私が見る唯一の解決策は、foo用とbar用の2つのモデルを作成することですが、自分自身の反復は不自由なものであり、サポートする必要があるオブジェクトはPost個あります。私が逃している他のアプローチがありますか?

+1

'/ posts/foo'や'/posts/bar'をどうしたらいいですか?たとえば、異なるユーザーによる投稿オブジェクトがありますか? 'fetch'や' bar'投稿を探しているかどうかを調べる 'fetchRequest'を調べることはできますか? –

+0

私の場合、私が話しているAPIには、FooとBar Postsの両方を単一のテーブルビューに表示するように要求する画面があります。私のポストモデルはどのタイプかを示すプロパティを持っているので、おそらく 'fetchRequest.predicate.predicateFormat'を見てその方法を判断できますか? – greenisus

+0

あなたの場合のように聞こえますが、 'entityName'を見るよりも' fetchRequest'をもっと詳しく調べる必要があります。 'fetchRequest.propertiesToFetch'やデータモデルに応じて他のものを見ることもできます。依然として2つのリクエストを送信する必要があるため、違いを確認できるようにしてください。 –

答えて

2

fetchRequestより詳細に調べる必要があります。entityNameを見てください。また、fetchRequest.propertiesToFetch、またはデータモデルに応じて他のものを見ることができます。依然として2つのリクエストを送信する必要があるため、AFNetworkingサブクラスがその違いを確認できるようにしてください。

また、お使いのrequestForFetchRequest:withContext:メソッドが実際に大きくなる可能性があります。 NSManagedObjectサブクラスを取得するより一般的なパターンを検討し、フェッチ要求を返すように要求することができます。

関連する問題