ios - 何时调用在 Swift 4 中对 Array 进行排序的函数?
问题描述
我制作了一个对数组进行排序并重新排序 TableView 的函数(我关注了这篇文章)。我通过 API 填充数组。
何时何地最好调用排序函数?当我从 ViewDidLoad 或 ViewDidAppear 调用它时,数组仍然是空的,所以什么也没有发生。
func sort(){
self.myArray = myArray.sorted(by: {$0.rank < $1.rank })
self.tableView.reloadData()
}
解决方案
我不知道你使用这种排序是为了什么,所以这可能没有用,但你可以在顶部添加一个 nil 检查,如果数组为 nil,则初始化一个新的空数组。
func sort(){
if self.myArray == nil {
self.myArray = [YourArrayType]()
}
self.myArray = myArray.sorted(by: {$0.rank < $1.rank })
self.tableView.reloadData()
}
您还可以声明数组可选(private var myArray: [Your ArrayType]?
)或在声明时初始化(private var myArray = [YourArrayType]()
)。第一个允许您使用 a 调用数组上的任何方法,?
如果数组为 nil,它将不会执行,另一个确保数组不是 nil 而只是空的。
推荐阅读
- javascript - 使用地图过滤但保留索引
- angular - Angular ViewChildren 不检索由 *ngTemplateOutlet 绘制的孩子
- python - 如果模型中的字段为空,则在保存时删除模型实例
- apache-spark - sparksql 或 hiveserver2 可以同时连接到 2 个不同的元存储吗?
- bash - 为什么管道 $RANDOM 的输出会影响值?
- ruby-on-rails - Rails 5.2 中的 nil 响应对象,用于 GET 请求的 RSpec-Rails 3.7 规范
- node.js - 使用 npm 正确安装了 typescript 包,但 vs code 找不到它
- awk - awk:过滤不过滤的非零数
- python - TypeError:反转数字时'int'对象不可下标
- java - OpenCV VideoCapture 无法读取帧