【发布时间】:2016-12-07 18:40:44
【问题描述】:
我将 newDetails 的值作为字符串获取。当我尝试以下代码时,我得到一个异常
[__NSArrayI dataUsingEncoding:]: 无法识别的选择器发送到实例。
我已将newDetail 声明为NSString。此外,此代码和以下代码中 newDetail 的值相同。
代码如下:
newDetail = [response valueForKey:@"newDetail"];
//newDetail prints as {"number":1,"nid":"1","pId":"3","name":"","me":"","day":"1"}
NSError *error;
NSData* data = [newDetail dataUsingEncoding:NSUTF8StringEncoding];
NSDictionary* json = [NSJSONSerialization
JSONObjectWithData:data
options:kNilOptions
error:&error];
但是当我尝试下面的代码时,它运行完美:
newDetail = @" {\"number\":1,\"nid\":\"1\",\"pId\":\"3\",\"name\":\"\",\"me\":\"\",\"day\":\"1\"}";
NSError *error;
NSData* data = [newDetail dataUsingEncoding:NSUTF8StringEncoding];
NSDictionary* json = [NSJSONSerialization
JSONObjectWithData:data
options:kNilOptions
error:&error];
谁能告诉我为什么会出现异常?
【问题讨论】:
-
我的猜测是键“newDetail”的值不是字符串,而是其他一些数据类型。可能是 [NSNull null]。
-
我正在打印newDetail的值,它不为空
-
你确定它是以字符串而不是字典的形式返回的吗?打印出来的行不明确。
-
是的,我确定。
-
这可能是
valueForKey:陷阱。使用response[@"newDetail"]会发生什么?
标签: ios objective-c json