我在使用Swift 4.1中的三元条件运算符了解某些内容时遇到了问题。我希望有人可以向我解释:)
我正在使用Apollo库。 该库向我展示了一个具有此字段的对象(编辑):
public var discount: Swift.Optional<Bool?> {
get {
return graphQLMap["discount"] as! Swift.Optional<Bool?>
}
set {
graphQLMap.updateValue(newValue, forKey: "discount")
}
}
在我的课堂上,我试图将此值设置为true
或nil
(如果值为false
,则应返回nil
以返回所有结果)
尝试#1:
func setGoodDeals(_ goodDeals: Bool) {
filters.discount = goodDeals ? goodDeals : nil;
}
这不起作用;我的应用因以下错误而崩溃:
无法转换类型为“ Swift.Optional”的值 (0x10a9fa298)更改为“ Swift.Bool”(0x10a9cddf8)。
尝试#2:
if ( goodDeals ) {
filters.discount = goodDeals;
} else {
filters.discount = nil;
}
这有效。
尝试#3:
func setGoodDeals(_ goodDeals: Bool) {
filters.discount = goodDeals ? true : nil;
}
这有效。
有人可以向我解释为什么吗?
提前,