iOS应用程序崩溃:NSCFNumber长度字段无法识别选件被发送至指定实例
发布时间
阅读量:
阅读量
遇到一个很坑的问题:应用崩溃了,XCode报错:
[__NSCFNumber length]: unrecognized selector sent to instance 0xb000000000000053
显然地讲,在这个情况下出现了一个问题:是因为出现了NSCFNumber类型的实例但错误地将其视为NSString类并试图对其调用length属性而导致了一个崩溃(crash)。然而为何会出现这种错误呢?
在OC代码中接收来自后端发送的四个数据,在开发过程中由于认为这些数据是以JSON格式直接解析而来,并因此将它们假定为NSString类型进行处理。然而值得探讨的是,在测试过程中发现第一个数据通常都能正常处理,在尝试解析第二个数据时却出现了前述错误。通过调试发现程序在打印相关类的信息时会提示出错原因
[NSJSONSerializationJSONObjectWithData]
在解析之后,在第一个数据确实是NSString类型的状况下,在调用length时不会出现问题;而后面的三个数据确实是__NSCFNumber类型。
查看了一下后端PHP代码之后发现:第一项数据确实是按照string类型的字段发送的而后三项数据则均为数值类型的字段发送者由于在编写PHP代码时对变量的数据类型并不敏感因此潜意识里也倾向于将这些发送过来的数据视为字符串形式这也解释了为什么我没有立
全部评论 (0)
还没有任何评论哟~
