我有一个生成JSON结果的REST服务,它已经被几个不同的验证工具等验证过了。我对iOS开发相当陌生,但总体上不是开发。尽管我尽了最大的努力,但我的尝试并不成功。
来自服务的典型响应:
[
{
"prcID": 547,
"prcName": "walls",
"prcDescription": "hi-lo",
"1prc": 270,
"2prc": 282,
"3prc": 312,
"4prc": 348,
"5prc": 354,
"6prc": 360,
"7prc": 366,
"8prc": 372,
"9prc": 384,
"10prc": 432
},
{
"prcID": 548,
"prcName": "doors",
"prcDescription": "hi-lo",
"1prc": 270,
"2prc": 282,
"3prc": 312,
"4prc": 348,
"5prc": 354,
"6prc": 360,
"7prc": 366,
"8prc": 372,
"9prc": 384,
"10prc": 432
}
]代码是样例代码和我自己尝试的代码的混合:
- (void)fetchedData:(NSData *)responseData {
//parse out the json data
NSError* error;
NSDictionary* json = [NSJSONSerialization JSONObjectWithData:responseData //1
options:kNilOptions
error:&error];
NSMutableArray *myarray = [json.description mutableCopy];
outPutText.text = [myarray mutableCopy];
}
- (void)viewDidLoad
{
[super viewDidLoad];
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
NSData* data = [NSData dataWithContentsOfURL:
[NSURL URLWithString:@"someserviceurl"]];
[self performSelectorOnMainThread:@selector(fetchedData:)
withObject:data waitUntilDone:YES];
});
}这段代码至少让我在TextView中看到了来自服务的响应,但每次我尝试使用ObjectAtIndex或AllKeys迭代进入'json‘NSDictionary时,我都会得到一个类似的错误,就像我尝试下面的代码时一样:
NSArray* somearray = [json objectForKey:@"prcName"];
NSLog(@"PriceName: %@", somearray);错误是:
Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSCFArray objectForKey:]: unrecognized selector sent to instance 0x71944b0'任何帮助都是非常感谢的。
发布于 2012-11-15 04:23:19
这个怎么样?
NSString *firstName = [NSString stringWithFormat:
@"%@",
json[0][@"prcName"], nil];
NSLog(@"%@", firstname);iOS6将响应转换为数组,我使用[0]来选择响应JSON的第一个“块”。
https://stackoverflow.com/questions/13290190
复制相似问题