我找到了一个将字符串转换为NSNumber的方法,但代码是在Objective-C中。我试过把它转换成swift但它没有用。
我正在使用的代码
NSNumberFormatter *f = [[NSNumberFormatter alloc] init];
f.numberStyle = NSNumberFormatterDecimalStyle;
NSNumber *myNumber = [f numberFromString:@"42222222222"];
并且在swift中我以这种方式使用它
var i = NSNumberFormatter.numberFromString("42")
但是这段代码不起作用,我做错了什么?
提前致谢
答案 0 :(得分:145)
NSNumber(integer:myInteger)
已更改为NSNumber(value:myInteger)
let someString = "42222222222"
if let myInteger = Int(someString) {
let myNumber = NSNumber(value:myInteger)
}
像这样使用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")!
使用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