2013-09-30 51 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); 
}]; 

這是recommended way發送GET在AFNetworking 2.0中的請求。我想獲取json中特定鍵的值,因此我想使用responseObject作爲NSDictionary。這就是我努力:AFNetworking 2.0 - 使用responseObject作爲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

默認情況下,AFHTTPRequestOperationManagerresponseSerializerAFJSONResponseSerializer實例,因此responseObject已經爲您解析的JSON(在你的情況下,它會根據你說的是一個NSDictionary)。

然後,就用它作爲你會使用字典:

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

我有使用AFNetworking類似的問題。我得到一個解析的JSON對象,並需要將其存儲在數組中以備後用。解析的JSON是一個字符串作爲值的字典嗎?我似乎無法使用KVC進入字典,雖然 – noobsmcgoobs

5

響應對象已經是一本字典! AFNetworking爲您處理。

+0

@Irfan:我認爲你的印刷術使它更難閱讀。 – vikingosegundo