-2

-[__NSCFString objectAtIndex:]: unrecognized selector sent to instance 0x6891460 というエラーが表示される問題を解決してください

NSString *urlString = @"http://192.168.1.190:8080/mwharf/retrive.action?action=consigneeName&startConsgn=";
NSString *url = [urlString stringByAppendingString:txtConsignee.text];

NSData *webData=[NSMutableData dataWithContentsOfURL:[NSURL URLWithString:url]];    

NSArray *jsonDict=[NSJSONSerialization JSONObjectWithData:webData options:kNilOptions error:&error];

NSMutableArray *tempArray;
NSMutableArray *consigneeArray=[[NSMutableArray alloc]init];
NSInteger arrayCount=0;
for (int i=0; i<[jsonDict count]; i++) {              
    consigneeArray =[jsonDict objectAtIndex:i]; 
    NSLog(@"consigneeArray :%@",consigneeArray);
    tempArray=[[NSMutableArray alloc]initWithArray:[consigneeArray objectAtIndex:arrayCount]]; 
    [consigneeArray insertObject:tempArray atIndex:arrayCount];
    arrayCount++; 
} 

NSArray *passArray=[NSArray arrayWithObject:consigneeArray];
NSLog(@"passArray :%@",passArray);
4

2 に答える 2

0

[NSJSONSerialization JSONObjectWithData:] は、NSArray ではなく NSDictionary を返します。したがって、NSDictionary にはそのような objectAtIndex メソッドがないため、エラーが発生します。これを試して:

NSDictionary *jsonDict=[NSJSONSerialization JSONObjectWithData:webData options:kNilOptions error:&error];

NSMutableArray *tempArray;
NSMutableArray *consigneeArray=[[NSMutableArray alloc]init];
NSInteger arrayCount=0;
for(NSString* key in jsonDict) {


    consigneeArray =[jsonDict valueForKey: key]; 
    NSLog(@"consigneeArray :%@",consigneeArray);
    tempArray=[[NSMutableArray alloc]initWithArray:[consigneeArray objectAtIndex:arrayCount]]; 
    [consigneeArray insertObject:tempArray atIndex:arrayCount];
    arrayCount++; 
} 

ただし、戻り値の型は NSArray または NSString の場合もあり、JSON 構造によって異なります。したがって、最善の方法は、を使用して戻り値の型を確認することです

 [returnObj isKindOfClass:[NSDictionary class]]

 [returnObj isKindOfClass:[NSArray class]]

各戻り値の型をそれぞれ解析します

于 2012-10-25T07:47:54.920 に答える
0

このエラーは、NSString のオブジェクトを使用して特定のインデックスでオブジェクトを通過しようとしているために発生します。objectAtIndex は NSArray または NSMutableArray のみをサポートします。

于 2012-10-25T08:56:04.237 に答える