-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:] 返回一个 NSDictionary 而不是 NSArray。所以因为 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 回答