后台数据为空因此程序闪退

2016-06-13 10:27:49.781 TheBeeWorld[346:48482] -[__NSCFString singer]: unrecognized selector sent to instance 0x14e8d5cb0

2016-06-13 10:27:49.783 TheBeeWorld[346:48482] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSCFString singer]: unrecognized selector sent to instance 0x14e8d5cb0'

*** First throw call stack:

(0x1837e5900 0x182e53f80 0x1837ec61c 0x1837e95b8 0x1836ed68c 0x1000c33d4 0x1000c79d4 0x1889cd09c 0x18882931c 0x188829484 0x1888187e8 0x18882dfb0 0x1885c308c 0x1884d3778 0x185ee2b2c 0x185edd738 0x185edd5f8 0x185edcc94 0x185edc9dc 0x185ed60cc 0x18379c588 0x18379a32c 0x18379a75c 0x1836c9680 0x184bd8088 0x188540d90 0x1000a0fc4 0x18326a8b8)

libc++abi.dylib: terminating with uncaught exception of type NSException

程序闪退,真机测试控制台输出错误原因如下:

断点查询崩在 cell 中赋值方法上:

把该行注释掉结果还是崩溃在这个方法里,同时判断得到:数据解析success 都成功了,但在会走failure 的方法,一走这里就要开始崩了。同时将 model 赋值那段注释掉,程序不崩了:

查看网络解析出来的数据发现有部分是空的:

怎么办呢?在网络解析的时候加个判断吧:

或者自己全部都判断下,如下图:

喏,解决所有的情况,不管是否有空值出现,数据都会正常上传并且不再闪退。

任何 Crash 只要找到原因就好解决。

原文地址:https://www.cnblogs.com/sandyzhang/p/5580550.html