2016-08-18 6 views
3

Я использовал основные данные в моем проекте iOS swift и объявил переменную как Int32, в файле класса она была инициализирована NSNumber, и пока я пытался увеличить эту переменную, создав объект для этого класса, он показывает, что двоичный оператор + = не может применяться к NSNumber. Возможно ли увеличить значение NSNumber или я должен выбрать Int16 или Int64 для доступа к переменной.Можно ли увеличивать переменную NSNumber в iOS swift?

+3

'объекты NSNumber' неизменны. Вам нужно создать новый экземпляр с новым значением на основе исходного значения. – rmaddy

+1

Смелый шаг человека, который проголосовал за все ответы. – WMios

ответ

8

Вот три разных ответа от сжатого к многословному:

Учитывая, что 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 
+1

Все три ответа работали правильно. Большое спасибо за ваши ответы. –

1

Используйте вар. Потому что 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; 
} 
2
var number = NSNumber(integer: 10) 
number = number.integerValue + 1 
2

невозможно увеличивать в NSNumber когда объект создан. Нет API, что позволяет это.

Вы должны воссоздать объект NSNumber с новым (увеличенным) значением:

let number = NSNumber(int: 15) 
let incrementedNumber = NSNumber(int: number.intValue + 1) 

 Смежные вопросы

  • Нет связанных вопросов^_^