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
String to NSNumber in swift
提问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 if
statements 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