Подтвердить что ты не робот

Строка для NSNumber в быстрой

Я нашел метод преобразования строки в NSNumber, но код находится в objective-C. Я попытался преобразовать его в быстрый, но он не работает.

Код, который я использую

NSNumberFormatter *f = [[NSNumberFormatter alloc] init];
f.numberStyle = NSNumberFormatterDecimalStyle;
NSNumber *myNumber = [f numberFromString:@"42222222222"];

и в swift я использую его таким образом

var i = NSNumberFormatter.numberFromString("42")

Но этот код не работает, что я делаю неправильно?

Заранее спасибо

4b9b3361

Ответ 1

Swift 3.0

NSNumber(integer:myInteger) изменился на NSNumber(value:myInteger)

let someString = "42222222222"
if let myInteger = Int(someString) {
    let myNumber = NSNumber(value:myInteger)
}

Swift 2.0

Используйте инициализатор Int(), как это.

let someString = "42222222222"
if let myInteger = Int(someString) {
    let myNumber = NSNumber(integer:myInteger)
    print(myNumber)
} else {
    print("'\(someString)' did not convert to an Int")
}

Это можно сделать в одной строке, если вы уже знаете, что строка будет идеально конвертироваться или вам просто все равно.

let myNumber = Int("42222222222")!

Swift 1.0

Используйте метод toInt().

let someString = "42222222222"
if let myInteger = someString.toInt() {
    let myNumber = NSNumber(integer:myInteger)
    println(myNumber)
} else {
    println("'\(someString)' did not convert to an Int")
}

Ответ 2

Или просто в одной строке:

NSNumberFormatter().numberFromString("55")!.decimalValue

Ответ 3

Swift 2

Попробуйте следующее:

var num = NSNumber.init(int: Int32("22")!)

Swift 3.x

 NSNumber.init( value: Int32("22")!)

Ответ 4

Вы можете использовать следующий код, если вы должны использовать NSNumberFormatter. Проще использовать метод Уизли.

let formatter = NSNumberFormatter()
formatter.numberStyle = NSNumberFormatterStyle.DecimalStyle;
if let number = formatter.numberFromString("42") {
    println(number)
}

Ответ 5

Я использую расширение в быстрой 3/4, и это круто.

extension String {
    var numberValue: NSNumber? {
        if let value = Int(self) {
            return NSNumber(value: value)
        }
        return nil
    }
}

а затем просто используйте следующий код:

stringVariable.numberValue

Круто то, что вам не нужна цепочка операторов if чтобы развернуть необязательные значения. Например,

if let _ = stringVariable, let intValue = Int(stringVariable!) {
    doSomething(NSNumber.init(value: intValue))
}

можно заменить на:

doSomething(stringVariable?.numberValue)

Ответ 6

В последнем Swift:

let number = NumberFormatter().number(from: "1234")

Ответ 7

Попробуйте один раз

let myString = "123"
let myInt = (myString as NSString).integerValue