我正在尝试将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;

10-08 19:41