Я использовал основные данные в моем проекте iOS swift и объявил переменную как Int32
, в файле класса она была инициализирована NSNumber
, и пока я пытался увеличить эту переменную, создав объект для этого класса, он показывает, что двоичный оператор + = не может применяться к NSNumber
. Возможно ли увеличить значение NSNumber
или я должен выбрать Int16
или Int64
для доступа к переменной.Можно ли увеличивать переменную NSNumber в iOS swift?
ответ
Вот три разных ответа от сжатого к многословному:
Учитывая, что NSNumbers неизменны, просто присвоить ему новое значение, равное тому, что вы хотите:
var num : NSNumber = NSNumber(integer: 1) // NSNumber of 1
num = num.integerValue + 1 // NSNumber of 2
Или вы можете присвоить другое путь:
var num : NSNumber = NSNumber(integer: 1) // NSNumber of 1
num = NSNumber(integer: num.integerValue + 1) // NSNumber of 2
Или вы можете преобразовать NSNumber
в Int
, увеличивает INT, и переназначить NSNumber
:
var num : NSNumber = NSNumber(integer: 1) // NSNumber of 1
var int : Int = Int(num)
int += 1
num = NSNumber(integer: int) // NSNumber of 2
Все три ответа работали правильно. Большое спасибо за ваши ответы. –
Используйте вар. Потому что let означает константы.
var mybalance = bankbalance as NSNumber
Но NSNumber является объектом и mybalance.integerValue не может быть назначено.
if let bankbalance: AnyObject? = keystore.objectForKey("coinbalance"){
let mybalance: NSNumber = bankbalance as NSNumber
var b = mybalance.integerValue + 50;
}
var number = NSNumber(integer: 10)
number = number.integerValue + 1
невозможно увеличивать в NSNumber когда объект создан. Нет API, что позволяет это.
Вы должны воссоздать объект NSNumber с новым (увеличенным) значением:
let number = NSNumber(int: 15)
let incrementedNumber = NSNumber(int: number.intValue + 1)
'объекты NSNumber' неизменны. Вам нужно создать новый экземпляр с новым значением на основе исходного значения. – rmaddy
Смелый шаг человека, который проголосовал за все ответы. – WMios