ios 快速将字符串转换为 NSNumber

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/28605703/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-31 04:54:42  来源:igfitidea点击:

String to NSNumber in swift

iosswiftios8nsnumber

提问by user2413621

I found a method to convert string to NSNumber, but the code is in objective-C. I have tried converting it to swift but it is not working.

我找到了一种将字符串转换为 NSNumber 的方法,但代码在 Objective-C 中。我曾尝试将其转换为 swift,但它不起作用。

The code i am using

我正在使用的代码

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

and in swift i am using it in this way

并且迅速地我以这种方式使用它

var i = NSNumberFormatter.numberFromString("42")

But this code is not working, what am I doing wrong?

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

Thanks in advance

提前致谢

回答by Wez

Swift 3.0

斯威夫特 3.0

NSNumber(integer:myInteger)has changed to NSNumber(value:myInteger)

NSNumber(integer:myInteger)已更改为 NSNumber(value:myInteger)

let someString = "42222222222"
if let myInteger = Int(someString) {
    let myNumber = NSNumber(value:myInteger)
}


Swift 2.0

斯威夫特 2.0

Use the Int()initialiser like this.

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

This can be done in one line if you already know the string will convert perfectly or you just don't care.

如果您已经知道字符串可以完美转换或者您根本不在乎,则可以在一行中完成此操作。

let myNumber = Int("42222222222")!


Swift 1.0

斯威夫特 1.0

Use the toInt()method.

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

回答by polarware

Or do it just in one line:

或者只在一行中完成:

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

回答by Vikram Biwal

Swift 2

斯威夫特 2

Try this:

尝试这个:

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

Swift 3.x

斯威夫特 3.x

 NSNumber.init( value: Int32("22")!)

回答by rakeshbs

You can use the following code if you must use NSNumberFormatter. It's simpler to use Wezly's method.

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

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

回答by Hemang

In latest Swift:

在最新的 Swift 中:

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

回答by Pei

I do use extension in swift 3/4 and it's cool.

我确实在 swift 3/4 中使用了扩展,这很酷。

extension String {
    var numberValue: NSNumber? {
        if let value = Int(self) {
            return NSNumber(value: value)
        }
        return nil
    }
}

and then just use following code:

然后只需使用以下代码:

stringVariable.numberValue

What is cool is that you don't need a chain of ifstatements to unwrap the optional values. For instance,

很酷的是,您不需要一系列if语句来解开可选值。例如,

if let _ = stringVariable, let intValue = Int(stringVariable!) {
    doSomething(NSNumber.init(value: intValue))
}

can be replaced by:

可以替换为:

doSomething(stringVariable?.numberValue)

回答by Ahmed Samir

("23" as NSString).integerValue ("23.5" as NSString).doubleValue

("23" 作为 NSString).integerValue ("23.5" 作为 NSString).doubleValue

and so on .

等等 。

回答by Rameshios

Try Once

尝试一次

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