检查出来:
(lldb) po NSNumberFormatter().numberFromString("+10.6")
nil
(lldb) po NSNumberFormatter().numberFromString("10.6")
▿ Optional(10.6)
(lldb) po NSNumberFormatter().numberFromString("-10.6")
▿ Optional(-10.6)
显然,在数字上添加减号是完全有效的,但加号不是。是这种预期的行为,所以,任何人都知道为什么?
答案 0 :(得分:1)
我不能说为什么NSNumberFormatter不能容忍“+”符号,但Swift的Float类型似乎更聪明:
{{1}}
它不会返回NSNumber,但我猜你总是可以输入/转换它。
答案 1 :(得分:0)
The problem is that no locale uses a positive prefix by default in their number formatters
您需要明确告诉您的NSNumberFormatter
实例该做什么。
这适用于Xcode playground:
import Foundation
// this outputs "nil"
let bustedNnumber = NSNumberFormatter().numberFromString("+10.6")
// this outputs "-10.6"
let minusnumber = NSNumberFormatter().numberFromString("-10.6")
let nf = NSNumberFormatter()
nf.numberStyle = .DecimalStyle
nf.positivePrefix = "+"
// this outputs "10.6"
let positiveNumber = nf.numberFromString("+10.6")