【发布时间】:2017-05-24 15:28:34
【问题描述】:
我有以下代码用于接收来自 JSON 格式的 PHP Web 服务的响应:
-(void)connectionDidFinishLoading:(NSURLConnection *)connection
{
NSString *responseStringWithEncoded = [[NSString alloc] initWithData: mutableData encoding:NSUTF8StringEncoding];
NSLog(@"Response from Server : %@", responseStringWithEncoded);
[self getData:responseStringWithEncoded];
}
-(void) getData:(NSString *) responseStringWithEncoded{
NSData *data = [responseStringWithEncoded dataUsingEncoding:NSUTF8StringEncoding];
NSDictionary* json = [NSJSONSerialization JSONObjectWithData:data options:0 error:nil];
NSLog(@"object for key ime = %@", [json objectForKey:@"imei"]);
NSString * jimei = [json objectForKey:@"imei"];
NSLog(@"jimei = %@", jimei);
// NSDictionary * jimei = [json objectForKey:@"imei"];
imeiLable.text = jimei;
}
我在模拟器中成功检索数据,但是当将接收到的字符串(NSDictionary)中的一个值分配给imeiLable.text 时,出现以下错误。
这是输出:
请求数据 = { URL:http://localhost/getjsonimei.php?imei=478593219801234 }
来自服务器的响应:{"id":7,"imei":478593219801234,"mname":"Samsung Glaxy","pamount":"2000 卢比","pname":"Faizi","address": "88 号楼 31 号楼","cnumber":11122233,"nic":"87456893"}
关键 ime 的对象 = 478593219801234
集美=478593219801234
这里是模拟器结果字符串(字典)和错误的详细描述。
2017-05-24 20:01:13.229 imiechecker[4005:61372]-[__NSCFNumber 长度]:无法识别的选择器发送到实例 0xb01b3472adbb0923 2017-05-24 20:01:13.263 imiechecker[4005:61372] *** 由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“-[__NSCFNumber 长度]:无法识别的选择器发送到实例 0xb01b3472adbb0923”我也尝试了以下方法:
NSDictionary * jimei = [json objectForKey:@"imei"];
但有同样的错误。
请指出我哪里做错了?
【问题讨论】:
-
[json objectForKey:@"imei"]是NSNumber,而不是NSString。所以为了工作:NSString * jimei = [[json objectForKey:@"imei"] stringValue]; -
好,它有效,非常酷......谢谢@Lame
-
@Maddy,我不知道你为什么对我的问题做了这么多的修改,为了获得一些声誉你打错了很多东西,这在编程中没有任何意义,就像`self getData: responseStringWithEncoded]; ` 这行之前写成 ` [self getData:responseStringWithEncoded]; ` 尽管您的节制总体上出现了编程概念错误,但实际上我是该网站的新手,对其纯粹的规则和规定一无所知,否则我也曾经报告过您的编辑技巧。所以请自行删除您的编辑。因为在你编辑之前我已经得到了一个很好的答案。
-
实际上,我认为 rmaddy 的编辑在很大程度上对问题的格式进行了很大改进。当然,他引入了一个小错误,但它比你所拥有的更容易阅读。我为你插入了
[。
标签: ios objective-c json uilabel