2017-02-06 17 views
1
[manager POST:urlString parameters:[self jsonDict] success:^(AFHTTPRequestOperation *operation, id responseObject){ 

     NSLog(@"response data: %@", responseObject); 


     NSArray *postFromResponse = [ responseObject valueForKeyPath:@"credentials"]; 
    NSLog(@"credentials:%@", postFromResponse); 

     for(NSDictionary *object in postFromResponse) 
     { 
      NSString *AccessKeyId = [object valueForKeyPath:@"AccessKeyId"]; 
      NSLog(@"%@", AccessKeyId); 
     } 



} 

它給我的錯誤:怎麼投響應對象中的一個對象

Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[<__NSCFString 0x79ea4430> valueForUndefinedKey:]: this class is not key value coding-compliant for the key AccessKeyId'

+0

'爲(*的NSDictionary在postFromResponse對象)':'postFromResponse'似乎有一些'NSString'而不是'NSDictionary'對象(如果不是全部'NSString')。這就是爲什麼在'object'是'NSString'的情況下,你不能在其上調用'valueForKeyPath'。還是因爲'responseObject'是一個'NSString'而不是'NSDictionary'?目前尚不清楚哪條線路導致問題,並向我們展示JSON可能會有所幫助。 – Larme

+0

我的回答是:credentials = {AccessKeyId = abac; SecretAccessKey =「99」; SessionToken =「rt」; }; – san

+0

請用此更新(編輯)您的問題,並指定它是否爲'postFromResponse'或'responseObject'的值。 – Larme

回答

0

試試這個:

NSMutableDictionary *responseDict = [NSJSONSerialization JSONObjectWithData:responseObject options:NSJSONReadingMutableContainers error:nil]; 
NSArray *postFromResponse = [responseDict valueforkey:@"credentials"]; 
for(NSDictionary *object in postFromResponse) { 
    NSString *AccessKeyId = [object valueforkey:@"AccessKeyId"]; 
    NSLog(@"%@", AccessKeyId); 
} 
+0

終止應用程序由於未捕獲的異常「NSInvalidArgumentException」,原因是:「 - [__ NSDictionaryI字節]:無法識別的選擇發送到實例0x7a0abc50」 ..sorry它給了我一個錯誤: – san

+0

我的迴應是:憑證= { AccessKeyId = abac; SecretAccessKey =「99」; SessionToken =「rt」; }; – san

+0

嘗試nsstring * a = [[responseDict valueforkey:@「credentials」] valueforkey:@「AccessKeyId」]; –