Строку NSNumber в Swift
Я нашел метод для преобразования строки в NSNumber, но код находится в objective-C. я попытался преобразовать его в swift, но он не работает.
код, который я использую
NSNumberFormatter *f = [[NSNumberFormatter alloc] init];
f.numberStyle = NSNumberFormatterDecimalStyle;
NSNumber *myNumber = [f numberFromString:@"42222222222"];
и в Swift я использую его таким образом
var i = NSNumberFormatter.numberFromString("42")
но этот код не работает, что я делаю не так?
спасибо заранее
6 ответов:
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") }
Swift 2
попробуйте это:
var num = NSNumber.init(int: Int32("22")!)
Swift 3.x
NSNumber.init( value: Int32("22")!)
Вы можете использовать следующий код, если вы должны использовать
NSNumberFormatter
. Проще использовать метод везли.let formatter = NSNumberFormatter() formatter.numberStyle = NSNumberFormatterStyle.DecimalStyle; if let number = formatter.numberFromString("42") { println(number) }
я использую расширение в Swift 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)