在Swift中,如何检查字符串是否为有效的双精度值?我已经使用从下面的扩展这个问题的(但为float),但如果该值不能被转换,它简单地返回“0”:
extension String {
var doubleValue:Double? {
return (self as NSString).doubleValue
}
}
理想情况下,我希望它返回,nil
以便可以将其包含在中if-let
,如下所示:
if let i = str.doubleValue {
object.price = i
} else {
// Tell user the value is invalid
}
确实,每次执行转换时都不创建数字格式器会更有效:
extension String {
struct NumFormatter {
static let instance = NumberFormatter()
}
var doubleValue: Double? {
return NumFormatter.instance.number(from: self)?.doubleValue
}
var integerValue: Int? {
return NumFormatter.instance.number(from: self)?.intValue
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句