ios - swift 中的三元展开

标签 ios swift option-type ternary-operator unwrap

我很快就使用了这段代码:

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

但都给出错误。知道如何解决这个问题吗?

最佳答案

您可以使用 Optional.map 代替三元来使其更简单:

override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return categories.map { $0.count } ?? 1
}

或者混合使用 Optional.map 和三元来实现我认为你正在努力实现的目标:

override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return categories.map { !$0.isEmpty ? $0.count : 1 } ?? 1
}

关于ios - swift 中的三元展开,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51807363/

相关文章:

ios - 我想在 swift 中使用 Objective C 代码。添加桥接 header 后,我开始收到所有原始数据类型的错误

swift - 无法为自定义 View 设置约束,Swift

swift - 在 swift 中解包选项

java - Java 中 Optional<T> 的 GC 开销

ios - 如何在tableview Cell中设置tableView的自动高度?

ios - iOS 8 启动图像是否必须具有 LaunchScreen.xib?

ios - 导航到包含 ScrollView 的 ViewController 速度太慢

ios - 当键盘消失时增加Tableview的高度?

ios - iOS 5 更新后,我的文档目录中的文件不见了? iOS 是否正在更改文档目录?

标签中的 Swift 可选