如何在Swift 3.0中检查""的条件
如何在Swift 3.0中检查""的条件
我想检查maxprice是否等于"",如果是的话,maxprice将变为maxprice = 0。
我的Json数据:
price = ({
maxprice = "
minprice = "
});
代码:
var Arr = NSArray()
Arr = result.value(forKey: "price") as! NSArray
let max = Arr.value(forKey: "maxprice")
if max == nil {
self.MaxValue = 0
self.MinValue = 0
}
else {
let maxval = (Arr.object(at: 0) as AnyObject).value(forKey: "maxprice") as! NSNumber
let min = (Arr.object(at: 0) as AnyObject).value(forKey: "minprice") as! NSNumber
self.MaxValue = maxval
self.MinValue = min
}
错误:无法将类型为'NSNull' (0x102148918)的值转换为'NSNumber' (0x10311c4a8)。
在Swift 3.0中,我们可以使用"?? "来检查"
let max = Arr.value(forKey: "maxprice") as? NSNumber ?? 0
这段代码的作用是,将Arr中的"maxprice"值作为NSNumber类型进行检查,如果该值为"
这段代码的原理是,首先使用value(forKey:)方法获取Arr中"maxprice"的值,并将其转换为NSNumber类型。然后,使用as?进行可选绑定,将其尝试转换为NSNumber类型。如果转换成功,则将转换后的值赋给max变量;如果转换失败(即值为"
通过这种方式,我们可以在Swift 3.0中轻松地检查"
在Swift 3.0中,如果我们想要检查一个条件是否为"
我们需要检查以下条件:
- 键"price"的值是否是一个Swift数组,其中包含字典[[String:Double]]。使用具体的类型可以避免额外的NSNull检查。
- 数组是否为空。
假设minprice和maxprice应该是Double类型的值,如果不是,请用Int类型替换Double类型。
下面是解决问题的代码:
if let priceArray = jsonDict["price"] as? [[String:Double]],
let price = priceArray.first {
minValue = price["minprice"] ?? 0.0
maxValue = price["maxprice"] ?? 0.0
} else {
minValue = 0.0
maxValue = 0.0
}
以上代码中,我们首先使用optional bindings将jsonDict["price"]转换为[[String:Double]]类型的priceArray。然后,我们使用priceArray.first获取第一个字典,将其赋值给price。
接下来,我们使用可选的字典键"minprice"和"maxprice"来获取对应的值。如果这两个键不存在或者对应的值是"
如果priceArray不存在或者为空,我们将minValue和maxValue都设置为0.0。
这样,我们就可以使用optional bindings和条件语句来检查Swift中的"