2012-11-19 20 views
1

我有導致__NSCFDictionary objectAtIndex:錯誤的數組字典。索引到數組字典時出現無法識別的選擇器錯誤

有人能告訴我爲什麼嗎?錯誤發生時,字典顯然至少有一個數組。

NSError *error; 
responseString = [[NSString alloc] initWithData:self.responseData2 encoding:NSUTF8StringEncoding]; 

/* response string contains this: 
    {"words": 
    { 
    "word": {"rowsreturned":0,"id":"-1","date":"","word":"","term":"","definition":"","updated_on":""} 
    }, 
    "status":"", 
    "rowsreturned":"" 
    } 
*/ 

NSDictionary *json = [NSJSONSerialization JSONObjectWithData:self.responseData2 options:kNilOptions error:&error]; 

NSArray *todaysWord = [[json objectForKey:@"words"] objectForKey:@"word"]; 

//error here -[__NSCFDictionary objectAtIndex:]: unrecognized selector sent to instance 
NSDictionary *word = [todaysWord objectAtIndex:0]; 
+1

[ json objectForKey:@「words」] objectForKey:@「word」];正在返回一個字典而不是一個數組。嘗試在該行之後添加NSLog。你可以看到 – iDev

回答

1

你的情況[[json objectForKey:@"words"] objectForKey:@"word"];正在返回一個字典,而不是一個數組。試着做以下,

id wordParam = [[json objectForKey:@"words"] objectForKey:@"word"]; 

if ([wordParam isKindOfClass:[NSArray class]]) { 
    NSDictionary *word = [(NSArray *)wordParam objectAtIndex:0]; 
} else if ([wordParam isKindOfClass:[NSDictionary class]]) { 
    NSDictionary *word = (NSDictionary *)wordParam; 
} else { 
    NSLog(@"error. %@ is not an array or dictionary", wordParam); 
} 

你的響應字符串也表明了word值,

{"rowsreturned":0,"id":"-1","date":"","word":"","term":"","definition":"","updated_on":""} 

這與鍵值對的字典爲rowsreturned:0id:-1等。

相關問題