Можно ли привести NSInteger к NSNumber? - PullRequest
38 голосов
/ 14 марта 2012

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

Ответы [ 3 ]

104 голосов
/ 14 марта 2012

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

NSNumber *myNum = @(myNsIntValue);

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

NSNumber *myNum = [NSNumber numberWithInteger:myNsIntValue];
17 голосов
/ 18 октября 2013

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

NSNumber *x = @1234; 
NSNumber *y = @(anIntegerVariable);
7 голосов
/ 03 февраля 2013

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

NSNumber *myNum = [NSNumber numberWithInteger:myNsIntValue];

Поскольку документ сказал:

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

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

...