Как увеличить NSNumber?
т.е. myNSNumber ++
objective-c
TheLearner
источник
источник
NSNumber *
всегда проверяйте, достаточно ли примитивных типов.Ответы:
Обновление: к вашему сведению, мне лично больше нравятся однострочные ответы BoltClock и DarkDusts. Они более краткие и не требуют дополнительных переменных.
Чтобы увеличить значение
NSNumber
, вам нужно будет получить его значение, увеличить его и сохранить в новомNSNumber
.Например, для
NSNumber
целого числа:Или для
NSNumber
хранения числа с плавающей запятой:источник
...
подставка? Это ссылка на псевдокод, верно? XCode не делает...
...
- это просто заполнитель для любого числа, которое вы хотите.NSNumber
объекты неизменны; Лучшее, что вы можете сделать, это взять примитивное значение, увеличить его, а затем обернуть результат в отдельныйNSNumber
объект:источник
Для тех, кто использует последнюю версию Xcode (пишет это как 4.4.1, SDK 5.1), с использованием объектных литералов вы можете очистить код еще немного ...
По-прежнему сложно иметь дело с упаковкой и распаковкой всего, что нужно для выполнения простых операций, но это становится лучше или, по крайней мере, короче.
источник
NSNumbers неизменяемы, вам нужно создать новый экземпляр.
источник
Сложите их все вместе, и вы получите:
источник
NSNumber
объекты неизменяемы (?)Мне нравится точечное выражение, потому что оно более краткое, и именно поэтому IOS поддерживает его в первую очередь:
источник
Если вы используете его для хранения целочисленного значения:
Для вещей с плавающей запятой краткий ответ следующий, но делать это - плохая идея, вы потеряете точность, и если вы позже будете проводить какое-либо сравнение, например [myNSNumber isEqual: @ (4.5)], вы можете быть удивлены :
Если вам нужно выполнить математические вычисления с числами с плавающей запятой, представленными как объекты в Objective-C (т.е. если вам нужно поместить их в массивы, словари и т. Д.), Вы должны использовать
NSDecimalNumber
.источник
Используйте категорию, чтобы упростить использование в будущем. Вот основная идея.
источник
В ответах на этот вопрос много полезной информации. Я использовал выбранный ответ в своем коде, и он сработал. Затем я начал читать остальные сообщения и сильно упростил код. Это немного сложнее читать, если вы не знакомы с изменениями в нотации, которые были введены в Xcode 5, но это намного чище. Я, наверное, мог бы сделать всего одну строчку, но тогда слишком сложно понять, что я делаю.
Я храню NSNumber в словаре и хочу увеличить его. Я получаю его, конвертирую в int, увеличиваю при преобразовании в NSNumber, а затем возвращаю в словарь.
Старый код
Новый код
источник