在Swift中,如何检查字符串是否为有效的双精度值?我已经使用从下面的扩展这个问题的(但为float),但如果该值不能被转换,它简单地返回“0”:
extension String { var doubleValue:Double? { return (self as NSString).doubleValue } }
理想情况下,我希望它返回,nil以便可以将其包含在中if-let,如下所示:
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 } }