我正在尝试将NSNumber转换为long,但是出现此错误:
[__NSSingleObjectArrayI intValue]:无法识别的选择器发送到
实例
这是我的代码:
NSNumber *dbversion = [settings valueForKey:@"Version"];
long dbver = [dbversion longValue];
我在这里做错了什么?
* settings是一个NSArray,“ Version”是一个长值的键。
最佳答案
您被困在键值编码陷阱中。
在某些情况下,valueForKey
的结果是错误消息明确指出的数组。
永远不要使用valueForKey
(除非您知道KVC做什么并且需要KVC),请使用密钥订阅。
由于settings
是一个数组,您可能会得到第一项
NSNumber *dbversion = settings[0][@"Version"];
并且
int
不是long
long dbver = [dbversion longValue];
但是,在64位计算机上,我建议使用
NSInteger
NSInteger dbver = dbversion.integerValue;