将 NSNumber 转换为 long



我正在尝试将NSNumber转换为long,但出现此错误:

[__NSSingleObjectArrayI intValue]:无法识别的选择器发送到 实例

这是我的代码:

NSNumber *dbversion = [settings valueForKey:@"Version"];
long dbver = [dbversion longValue];

我在这里做错了什么?

*设置是 NSArray,"版本"是长值的关键。

您陷入了键值编码陷阱。

在某些情况下,valueForKey的结果是一个错误消息明确指出的数组。

不要永远不要使用valueForKey(除非你知道 KVC 做什么并且你需要 KVC(,使用密钥订阅。

由于settings是一个数组,您可能会得到第一项

NSNumber *dbversion = settings[0][@"Version"];

int不是long

long dbver = [dbversion longValue];

但是,在 64 位计算机上,我建议使用 NSInteger

NSInteger dbver = dbversion.integerValue;

>//我认为您正在将字典"设置"中的字符串存储到 NSNumber,因此它显示错误,就像您提到的问题一样。请尝试使用解决方案。愿这对你有所帮助。

NSNumber *dbversion = [NSNumber numberWithLong:[[settings valueForKey:@"Version"] longLongValue]];
int dbver = [dbversion longValue];