在Swift中无法将String转换为Double。

13 浏览
0 Comments

在Swift中无法将String转换为Double。

我从服务器收到一个字典作为响应:

{
  "gross_price" = "6.00";
  "gross_price_total" = "6.00";
  "guests_count" = 1;
}

然后我尝试:

let x = dictionary["gross_price_total"] as? Double

let y = dictionary["gross_price_total"]!

println("result: \(x) \(y)")

输出结果为:

result: nil 6.00

为什么?它不是一个Double类型吗?

结果是我的最终代码不起作用:

if let grossPriceTotal = dictionary["gross_price_total"] as? Double {

println("final result: \(grossPriceTotal)")

}

0
0 Comments

在Swift中,将String类型转换为Double类型时可能会出现"Cannot convert String to Double"的错误。这个错误的原因是Swift中不能直接将String类型转换为Double类型。

要解决这个问题,可以通过创建一个扩展(extension)来初始化Double类型,并使用NSString的方法doubleValue来完成转换。下面是一个示例的扩展代码:

extension Double{

init(string:String){

self = (string as NSString).doubleValue

}

}

在使用时,可以通过调用Double的构造函数并传入String类型的参数来实现转换。下面是一个示例代码:

let x = Double(string: dictionary["gross_price_total"])

通过上述扩展和代码,可以实现将String类型转换为Double类型,解决"Cannot convert String to Double"的问题。这种方法被认为是一种创造性的使用扩展的方式。

0
0 Comments

在Swift中,将字符串转换为Double类型是一种常见的操作。然而,有时在转换过程中可能会遇到"Cannot convert String to Double"的错误。

这个错误的原因是在将字符串转换为Double类型时,代码中没有正确处理可能导致转换失败的情况。根据上述代码片段,我们可以看到在将字符串dictionary["gross_price_total"]转换为Double类型时,使用了as NSString来将其强制转换为NSString类型,然后再调用doubleValue方法进行转换。

要解决这个问题,我们需要确保字符串中的内容可以被正确转换为Double类型。可以通过以下方法来处理:

1. 使用Optional绑定来确保字符串不为nil:

if let priceString = dictionary["gross_price_total"] as? String {

let price = Double(priceString)

}

2. 使用guard语句来确保字符串不为nil:

guard let priceString = dictionary["gross_price_total"] as? String else {

return

}

let price = Double(priceString)

3. 使用if-let语句来确保字符串可以被转换为Double类型:

if let priceString = dictionary["gross_price_total"] as? String, let price = Double(priceString) {

// 使用price进行后续操作

}

通过以上方法,我们可以确保在将字符串转换为Double类型时,不会出现"Cannot convert String to Double"的错误。这样,我们就可以安全地进行字符串到Double类型的转换,并继续进行后续操作。

0