Можно ли преобразовать NSInteger в NSNumber?

Можно ли преобразовать NSInteger в объект NSNumber?

Мне нужно преобразовать тег объекта UIImageView в объект NSNumber, потому что мне нужно передать его в качестве аргумента функции.


person Fitzy    schedule 14.03.2012    source источник
comment
Абсолютно возможно преобразовать NSInteger в NSNumber*. Результат, скорее всего, приведет к аварии. Конечно, если у вас есть число x, вы можете использовать @(x) для создания объекта NSNumber со значением x. Который будет работать, но не бросок.   -  person gnasher729    schedule 12.05.2014


Ответы (3)


Вы не можете преобразовать его, потому что NSInteger — это не объект, а просто псевдоним для встроенного типа. Вы всегда можете создать новый объект NSNumber из NSInteger, например:

NSNumber *myNum = @(myNsIntValue);

или в предыдущей версии компилятора используйте

NSNumber *myNum = [NSNumber numberWithInteger:myNsIntValue];
person Sergey Kalinichenko    schedule 14.03.2012

начиная с Apple LLVM Compiler 4.0, есть более простой способ создать объект NSNumber:

NSNumber *x = @1234; 
NSNumber *y = @(anIntegerVariable);
person Brian    schedule 18.10.2013

Это более правильный ответ, и он не приведет к неожиданной ошибке.

NSNumber *myNum = [NSNumber numberWithInteger:myNsIntValue];

Потому что док сказал:

«numberWithInteger: создает и возвращает объект NSNumber, содержащий заданное значение, обрабатывая его как NSInteger».

«numberWithInt: создает и возвращает объект NSNumber, содержащий заданное значение, обрабатывая его как целое число со знаком».

person Kevin    schedule 03.02.2013