是否可以将NSInteger转换为NSNumber?

Fit*_*tzy 38 casting objective-c nsnumber nsinteger

快速问题 - 是否可以将NSInteger转换为NSNumber对象?我需要将UIImageView对象的标记转换为NSNumber对象,因为我需要将它作为参数传递给函数.

das*_*ght 104

你不能强制转换它,因为NSInteger它不是一个对象,只是一个内置类型的别名.您始终可以创建一个新NSNumber对象NSInteger,如下所示:

NSNumber *myNum = @(myNsIntValue);
Run Code Online (Sandbox Code Playgroud)

或者在编译器的先前版本中,使用

NSNumber *myNum = [NSNumber numberWithInteger:myNsIntValue];
Run Code Online (Sandbox Code Playgroud)


Bri*_*ian 18

因为Apple LLVM Compiler 4.0,有一种更简单的方法来创建NSNumber对象:

NSNumber *x = @1234; 
NSNumber *y = @(anIntegerVariable);
Run Code Online (Sandbox Code Playgroud)


Kev*_*vin 7

这是更正确的答案,它不会产生意外错误.

NSNumber *myNum = [NSNumber numberWithInteger:myNsIntValue];
Run Code Online (Sandbox Code Playgroud)

因为医生说:

"numberWithInteger:创建并返回包含给定值的NSNumber对象,将其视为NSInteger."

"numberWithInt:创建并返回包含给定值的NSNumber对象,将其视为带符号的int."