Convert NSNumber to long

北城余情 提交于 2019-12-11 16:27:50

问题


I am trying to convert a NSNumber to long but I get this error:

[__NSSingleObjectArrayI intValue]: unrecognized selector sent to instance

Here is my code:

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

What am I doing wrong here?

*settings is a NSArray and "Version" is the key for a long value.


回答1:


You are caught in the Key-Value Coding trap.

In some cases the result of valueForKey is an array which the error message clearly states.

Don't Never use valueForKey(unless you know what KVC does and you need KVC), use key subscription.

And as settings is an array you might get the first item

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

and int is not long

long dbver = [dbversion longValue];

However on a 64-bit machine I recommend to use NSInteger

NSInteger dbver = dbversion.integerValue;



回答2:


//I think you are storing string from dictionary "settings" to NSNumber so it's showing error like you mention in question. Please Try with solution. May this help you.

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


来源:https://stackoverflow.com/questions/49666786/convert-nsnumber-to-long

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!