ios - Swift - 三元条件运算符的误解
问题描述
我在理解 Swift 4.1 中的三元条件运算符时遇到问题。我希望有人可以向我解释:)
我正在使用阿波罗图书馆。这个库向我展示了一个带有这个字段的对象(编辑):
public var discount: Swift.Optional<Bool?> {
get {
return graphQLMap["discount"] as! Swift.Optional<Bool?>
}
set {
graphQLMap.updateValue(newValue, forKey: "discount")
}
}
在我的课堂上,我试图将此值设置为true
or 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;
}
这行得通。
谁能向我解释为什么?
提前谢谢,
解决方案
很简单。它是这样工作的。
假设我们必须基于 bool 'isNewUser' 传递字符串。
yourLable.text = isNewUser ?“你能得到”:“你得到”
如果 'isNewUser' 为真,那么它将传递“你可以得到”,否则它将传递“你得到”。
我希望它很清楚。
推荐阅读
- javascript - 如何为引导模式一起触发 2 个事件?
- ios - 重新排序时在 tableviewcell 上添加阴影
- javascript - 如何将 co.wrap 与生成器一起使用
- ruby-on-rails - jsonb 保存数组列 jsonb postgres rails
- python - 使用 Lambda 从 base64 上传 s3
- gcc - 如何在 Qt 中禁用 mingw 的优化
- git - git remote push origin 已更改且无法重置
- python - QML 应用程序在 QApplication.exec() 上冻结并且不显示窗口
- node.js - 在 NodeJS 中设置不记名令牌
- json - 公开 Oracle 数据库中的数据以供 Web 服务使用