2013-09-30 8 views
17
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager]; 
[manager GET:@"http://example.com/resources.json" parameters:nil success:^(AFHTTPRequestOperation *operation, id responseObject) { 
    NSLog(@"JSON: %@", responseObject); 
} failure:^(AFHTTPRequestOperation *operation, NSError *error) { 
    NSLog(@"Error: %@", error); 
}]; 

रूप responseObject का उपयोग इस AFNetworking 2.0 में GET अनुरोध भेजने के लिए recommended way है। मैं जेसन में एक विशिष्ट कुंजी का मान प्राप्त करना चाहता हूं, इसलिए मैं responseObjectNSDictionary के रूप में उपयोग करना चाहता हूं।AFNetworking 2.0 - NSDictionary

NSError *jsonError = nil; 
NSDictionary *json = [NSJSONSerialization JSONObjectWithData:(NSData *)responseObject options:kNilOptions error:&jsonError]; 

यह काम नहीं किया:

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSCFDictionary bytes]: unrecognized selector sent to instance 0xa048120' 

मैं responseObject में एक विशिष्ट कुंजी का मान कैसे प्राप्त कर सकते हैं इस मैं क्या कोशिश कर रहा था है?

उत्तर

30

डिफ़ॉल्ट रूप से, AFHTTPRequestOperationManager सेट responseSerializer एक AFJSONResponseSerializer उदाहरण के लिए, तो responseObject पहले से ही अपने पार्स JSON है (आपके मामले में, यह एक NSDictionary जो आपने कहा है के अनुसार हो जाएगा)।

फिर, बस इसका इस्तेमाल के रूप में आप एक शब्दकोश का उपयोग करेंगे:

NSString *value = responseObject[@"someKey"]; 
+0

मुझे AFNetworking का उपयोग करने में एक ही समस्या थी। मुझे एक पार्स किए गए JSON ऑब्जेक्ट को वापस मिलता है और बाद में उपयोग के लिए इसे सरणी में स्टोर करने की आवश्यकता होती है। क्या पार्स किए गए JSON तारों के साथ तारों के रूप में एक शब्द है? मैं – noobsmcgoobs

5

प्रतिक्रिया ऑब्जेक्ट पहले से ही एक शब्दकोश है! AFNetworking ने आपके लिए इसे संभाला था।

+0

@Irfan हालांकि शब्दकोश में जाने के लिए केवीसी का उपयोग नहीं कर सकता प्रतीत होता हूं: मुझे लगता है कि आपकी टाइपोग्राफी इसे पढ़ने में मुश्किल बनाती है। – vikingosegundo

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