编译控制台报错:
NSInvalidArgumentException -[__NSCFConstantString stringValue]: unrecognized selector sent to instance 0x1070fcf80
错误原因:
指针指向的内容直接放在了指针变量的内存地址中,因为在 64 位环境下指针变量的大小达到了 8 位足以容纳一些长度较小的内容。这个类型是标签指针字符串,这是苹果在 64 位环境下对 NSString,NSNumber 等对象做的一些优化。
本应该是对一个NSNumber对象进行stringValue,但却对一个string对象进行了stringValue。由于从服务器端接受的字段数据类型在string和value之间飘忽不定,于是我找后台让他们确定字段的数据类型,后台的人说,他们PHP语言对数值型和string不作区分。这就坑了客户端了,只能自己处理了。
解决方案:
1.统一转成NSNumber
NSNumber *uid = [NSNumber numberWithInteger:[[resultData objectForKey:@"appid"] integerValue]];
2.统一转成NSString
NSString *appid = [NSString stringWithFormat:@"%@",resultData[@"appid"]];
网友评论