字符串到swift中的NSNumber

use*_*621 59 nsnumber ios swift ios8

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

我正在使用的代码

NSNumberFormatter *f = [[NSNumberFormatter alloc] init];
f.numberStyle = NSNumberFormatterDecimalStyle;
NSNumber *myNumber = [f numberFromString:@"42222222222"];
Run Code Online (Sandbox Code Playgroud)

我很快就以这种方式使用它

var i = NSNumberFormatter.numberFromString("42")
Run Code Online (Sandbox Code Playgroud)

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

提前致谢

Wez*_*Wez 146

Swift 3.0

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

let someString = "42222222222"
if let myInteger = Int(someString) {
    let myNumber = NSNumber(value:myInteger)
}
Run Code Online (Sandbox Code Playgroud)

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")
}
Run Code Online (Sandbox Code Playgroud)

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

let myNumber = Int("42222222222")!
Run Code Online (Sandbox Code Playgroud)

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")
}
Run Code Online (Sandbox Code Playgroud)


pol*_*war 12

或者只做一行:

NSNumberFormatter().numberFromString("55")!.decimalValue
Run Code Online (Sandbox Code Playgroud)

  • 就像 David Berry 在下面评论的那样,创建这样的 NSNumberFormatters 时要小心,因为它们的创建成本很高。如果多次使用相同的格式化程序,则更好地缓存或使用单例。 (2认同)

Vik*_*wal 7

斯威夫特2

试试这个:

var num = NSNumber.init(int: Int32("22")!)
Run Code Online (Sandbox Code Playgroud)

Swift 3.x

 NSNumber.init( value: Int32("22")!)
Run Code Online (Sandbox Code Playgroud)

  • 不需要用“.init”初始化。简单地写: NSNumber(value: Int32("22")!) (2认同)

Hem*_*ang 6

在最新的 Swift 中:

let number = NumberFormatter().number(from: "1234")
Run Code Online (Sandbox Code Playgroud)


rak*_*hbs 5

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

let formatter = NSNumberFormatter()
formatter.numberStyle = NSNumberFormatterStyle.DecimalStyle;
if let number = formatter.numberFromString("42") {
    println(number)
}
Run Code Online (Sandbox Code Playgroud)

  • 另请注意,"NSNumberFormatter"的创建成本很高,应尽可能缓存,而不是每次使用时都创建. (4认同)