2011-12-05 8 views
19

मैं RestKit का उपयोग करना चाहता हूं और उसी श्रेणी में कई अलग-अलग अनुरोधों को संभालना चाहता हूं, यानी didLoadResponse: विधि में। मैं अलग-अलग अनुरोधों के बीच अंतर कैसे कर सकता हूं? मुझे कैसे पता चलेगा कि कौन सा अनुरोध समाप्त हो गया है?RestKit: didLoadResponse में एकाधिक अनुरोधों को अलग करें:

मैं

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

के माध्यम से अनुरोध कर रहा हूँ तो फिर, प्रतिनिधि-विधि

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

में संभव है?

उत्तर

22

निश्चित रूप से, RKClient get: विधि RKRequest ऑब्जेक्ट देता है। अनुरोध के लिए बस एक उपयोगकर्ता डेटा सेट करें और इसे बाद में प्रतिनिधि में पुनर्प्राप्त करें।

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 का उपयोग करना है।

उदाहरण के लिए, जब कोई उपयोगकर्ता मेरे ऐप में लॉग इन करता है तो मैं दो HTTP कॉल करता हूं, और मैं getSsary द्वारा लौटाई गई वस्तु से 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]; 

    } 
} 
संबंधित मुद्दे