Строка для NSNumber в быстрой
Я нашел метод преобразования строки в NSNumber, но код находится в objective-C. Я попытался преобразовать его в быстрый, но он не работает.
Код, который я использую
NSNumberFormatter *f = [[NSNumberFormatter alloc] init];
f.numberStyle = NSNumberFormatterDecimalStyle;
NSNumber *myNumber = [f numberFromString:@"42222222222"];
и в swift я использую его таким образом
var i = NSNumberFormatter.numberFromString("42")
Но этот код не работает, что я делаю неправильно?
Заранее спасибо
Ответы
Ответ 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