【发布时间】:2019-01-19 07:12:39
【问题描述】:
我很快就使用了这个代码:
var categories: Results<Category>? //Realm dataType
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
if let categories = categories, !categories.isEmpty {
return categories.count
} else {
return 1
}
}
我现在正在寻找将我的 tableView 的代码构造为三元运算符,但不知道如何做到这一点。我找到了以下页面: https://dev.to/danielinoa_/ternary-unwrapping-in-swift-903 但我还不清楚。
我尝试的是:
return categories?.isEmpty ?? {($0).count} | 1
或
let result = categories?.isEmpty ?? {($0).count} | 1
return result
但两者都给出错误。知道如何解决这个问题吗?
【问题讨论】:
-
你想达到什么目的?
-
只是缩短我的代码:)
-
如果数组为 nil,为什么要返回 1?不应该是0吗?
-
我总是想在我的 tableView 中返回一行。如果我的数组不包含任何项目,则单元格的功能类似于占位符。单元格的标准值是“请添加项目”
-
您提供的代码示例需要专门实现
??和|中缀运算符,这在第一次浏览博文时并不明显。虽然生成的代码很优雅,但我更喜欢下面提供的原生Optional.map()解决方案。
标签: ios swift optional ternary-operator unwrap