1

__NSCFDictionary objectAtIndex:エラーの原因となっている配列の辞書があります。

誰かが理由を教えてもらえますか?エラーが発生した時点で、ディクショナリには明らかに少なくとも1つの配列があります。

 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];
4

1 に答える 1

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:0などのキーと値のペアを持つ辞書id:-1です。

于 2012-11-19T23:53:24.783 に答える