-[__NSCFString longValue]: unrecognized selector sent to instance 0x9bf8e10

昨天在写一个字典数据的时候,在一个字典内有18对键值对


-[__NSCFString longValue]: unrecognized selector sent to instance 0x9bf8e10_第1张图片
Paste_Image.png

其中有一个id的值为long型的,我就觉得既然你的值是long型的,那我要取你的值不是轻轻松松么,于是

 long appID = [info[@"id"] longValue];

然后当然报错了,

 -[__NSCFString longValue]: unrecognized selector sent to instance 0x9bf8e10
Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSCFString longValue]: unrecognized selector sent to instance 0x9bf8e10'

百思不得其解,不对啊,我之前用还是可以的,怎么就报错了呢。最后在stackoverflow上面找到了答案。
原来,@“id”所对应得值,是一个id类型的值,我们需要先将他强制转换成NSString类型的值,然后再将NSString类型的值转化成long型的。

NSString *strForId = dic[@"id"];
long appID = [strForId longLongValue];

或者直接强制转换

long app ID = (long)[dic[@"id"] longValue];

果然再也不报错了~

你可能感兴趣的:(-[__NSCFString longValue]: unrecognized selector sent to instance 0x9bf8e10)