能否将NSInteger转换为NSNumber?

46

如何将 NSInteger 转换为 NSNumber 对象?

我需要将 UIImageView 对象的标签转换为 NSNumber 对象,因为我需要将其作为参数传递给一个函数。


将 NSInteger 强制转换为 NSNumber* 是完全可能的。结果很可能会导致崩溃。当然,如果你有一个数字 x,你可以使用 @(x) 创建一个值为 x 的 NSNumber 对象。这样做是可行的,但不是强制转换。 - gnasher729
3个回答

115

你无法将其转换,因为NSInteger不是一个对象,而只是一个内置类型的别名。你始终可以从NSInteger创建一个新的NSNumber对象,像这样:

NSNumber *myNum = @(myNsIntValue);

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

NSNumber *myNum = [NSNumber numberWithInteger:myNsIntValue];

19

自从Apple LLVM Compiler 4.0以来,创建NSNumber对象的方法变得更加简单:

NSNumber *x = @1234; 
NSNumber *y = @(anIntegerVariable);

8

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

NSNumber *myNum = [NSNumber numberWithInteger:myNsIntValue];

因为文档中说:

“numberWithInteger: 创建并返回一个包含给定值的NSNumber对象,将其视为NSInteger。”

“numberWithInt: 创建并返回一个包含给定值的NSNumber对象,将其视为有符号int。”


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接