我的字典[String: Any]
中有一个对象,可以是Int或Double。在我的模型中,我有一个Double变量,我需要执行强制转换。现在我在做以下事情:
if let price = dict["price"] as? Double { self.price = price }
if let price = dict["price"] as? Int { self.price = Double(price) }
有什么办法可以让我的代码在短期内变得更加干净?
答案 0 :(得分:2)
您可以使用case let
来表明只有一件事要投射:
switch dict["price"] {
case let price as Double: { self.price = price }
case let price as Int: { self.price = Double(price) }
default: break
}
尽管代码稍长,但重复性较低,因为dict["price"]
仅使用一次。
如果您确定"price"
键将在那里并且将是一个数字,则可以使用以下代码:
self.price = (dict["price"] as! NSNumber).doubleValue
尽管较短,但第二种方法需要程序员提供更多的确定性才能不中断。如果有任何问题,第一个代码将使price
保持不变,而第二个代码将崩溃。
答案 1 :(得分:2)
你能尝试
if let price = dict["price"] as? NSNumber {
self.price = price.doubleValue
}