字符串到swift中的NSNumber

时间:2015-02-19 11:53:19

标签: ios swift ios8 nsnumber

我找到了一个将字符串转换为NSNumber的方法,但代码是在Objective-C中。我试过把它转换成swift但它没有用。

我正在使用的代码

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

并且在swift中我以这种方式使用它

var i = NSNumberFormatter.numberFromString("42")

但是这段代码不起作用,我做错了什么?

提前致谢

9 个答案:

答案 0 :(得分:145)

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

答案 1 :(得分:12)

或者只做一行:

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

答案 2 :(得分:7)

Swift 2

试试这个:

supervsor

Swift 3.x

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

答案 3 :(得分:5)

如果必须使用NSNumberFormatter,则可以使用以下代码。 使用Wezly的方法更简单。

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

答案 4 :(得分:3)

最新的Swift:

<script>

答案 5 :(得分:2)

我确实在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)

答案 6 :(得分:0)

(“ 23”为NSString).integerValue (“ 23.5”为NSString).doubleValue

以此类推。

答案 7 :(得分:0)

斯威夫特 5

let myInt = NumberFormatter().number(from: "42")

答案 8 :(得分:-5)

  

尝试一次

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