文字列をNSNumberに変換する方法を見つけましたが、コードはObjective-Cにあります。 Swiftに変換しようとしましたが、機能していません。
私が使用しているコード
NSNumberFormatter *f = [[NSNumberFormatter alloc] init];
f.numberStyle = NSNumberFormatterDecimalStyle;
NSNumber *myNumber = [f numberFromString:@"42222222222"];
そしてSwiftでこのように使用しています
var i = NSNumberFormatter.numberFromString("42")
しかし、このコードは機能していません。何が間違っていますか?
前もって感謝します
NSNumber(integer:myInteger)
はNSNumber(value:myInteger)
に変更されました
let someString = "42222222222"
if let myInteger = Int(someString) {
let myNumber = NSNumber(value:myInteger)
}
このような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")
}
これは、文字列が完全に変換されることが既にわかっているか、気にしない場合に1行で実行できます。
let myNumber = Int("42222222222")!
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")
}
または、1行で実行します。
NSNumberFormatter().numberFromString("55")!.decimalValue
スイフト2
これを試して:
var num = NSNumber.init(int: Int32("22")!)
Swift 3.x
NSNumber.init( value: Int32("22")!)
NSNumberFormatter
を使用する必要がある場合は、次のコードを使用できます。 Wezlyの方法を使用する方が簡単です。
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)
最新のSwiftの場合:
let number = NumberFormatter().number(from: "1234")