请解决我的问题它给我错误 - [__ NSCFString objectAtIndex:]:无法识别的选择器发送到实例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);
答案 0 :(得分: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]]
等
分别解析每个返回类型
答案 1 :(得分:0)
出现此错误的原因是您尝试使用NSString的对象浏览特定索引处的对象。而objectAtIndex仅支持NSArray或NSMutableArray。