web-dev-qa-db-ja.com

swiftのNSNumberへの文字列

文字列をNSNumberに変換する方法を見つけましたが、コードはObjective-Cにあります。 Swiftに変換しようとしましたが、機能していません。

私が使用しているコード

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

そしてSwiftでこのように使用しています

var i = NSNumberFormatter.numberFromString("42")

しかし、このコードは機能していません。何が間違っていますか?

前もって感謝します

59
user2413621

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")
}

これは、文字列が完全に変換されることが既にわかっているか、気にしない場合に1行で実行できます。

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")
}
146
Wez

または、1行で実行します。

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

スイフト2

これを試して:

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

Swift 3.x

 NSNumber.init( value: Int32("22")!)
7
Vikram Biwal

NSNumberFormatterを使用する必要がある場合は、次のコードを使用できます。 Wezlyの方法を使用する方が簡単です。

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

私は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)
1
Pei

最新のSwiftの場合:

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