2011-12-05 3 views
19

私はRestKitを使用して同じクラス、つまりdidLoadResponse:メソッドでいくつかの異なるリクエストを処理したいと思います。どのように私は異なる要求を区別することができますか?どのリクエストが完了したかはどのようにわかりますか?RestKit:didLoadResponseで複数のリクエストを区別する:

私は、デリゲートメソッドで

- (void)request:(RKRequest *)request didLoadResponse:(RKResponse *)response { 
    if (???) // request which gets XY returned 
     ... 
    else if (???) // request which gets YZ returned 
     ... 
} 

が可能ということです、そして、

RKClient *client = [RKClient sharedClient]; 
[client get:@"/....", method] delegate:self]; 

を経由して要求をやっていますか?

答えて

22

確かに、RKClient get:メソッドはRKRequestオブジェクトを返します。 userDataをリクエストに設定し、後でデリゲートで取得します。

RKClient *client = [RKClient sharedClient]; 
RKRequest *request = [client get:@"/....", method] delegate:self]; 
[request setUserData:@"FirstRequest"]; 

とデリゲートで、後でそれを確認

- (void)request:(RKRequest *)request didLoadResponse:(RKResponse *)response { 
    id userData = [request userData]; 
    if ([userData isEqual:@"FirstRequest"]) // request which gets XY returned 
     ... 
    else if (...) // request which gets YZ returned 
     ... 
} 
+0

回答はどこですか? – mja

0

これは、あなたの質問に正確な答えはありませんが、私は何人かの人々が中に複数の要求を区別するためにどのように思ってここに来るだろうという気持ちを持っていますdidLoadObjects、私がしたように。解決方法はisKindOfClassです。

たとえば、ユーザがアプリケーションにログインしたときに2つのHTTP呼び出しを行い、getSummaryから返されたオブジェクトからgetUser呼び出しから返されたオブジェクトを区別したい(私がクラッシュしなければクラッシュするため)。このコードは、返されたオブジェクトが特定のクラスの「種類」であるかどうかをチェックし、そのオブジェクトがそのオブジェクトのローカルインスタンスにオブジェクトを設定するかどうかをチェックします。

- (void)objectLoader:(RKObjectLoader*)objectLoader didLoadObjects:(NSArray*)objects { 

    if ([[objects objectAtIndex:0] isKindOfClass:[APIUser class]]) { 

     APIUser *apiUser = [objects objectAtIndex:0]; 

    } 
    else if ([[objects objectAtIndex:0] isKindOfClass:[APIUserSummary class]]) { 

     APIUserSummary *summary = [objects objectAtIndex:0]; 

    } 
} 
関連する問題