Ios 如何在Swift 4中按列值对UITableView排序?
我有一个应用程序可以显示比特币的价格。我希望在单击列标题时进行排序 我正在尝试这样做,点击已被响应,但什么也没有发生,列继续未排序Ios 如何在Swift 4中按列值对UITableView排序?,ios,swift,uitableview,sorting,Ios,Swift,Uitableview,Sorting,我有一个应用程序可以显示比特币的价格。我希望在单击列标题时进行排序 我正在尝试这样做,点击已被响应,但什么也没有发生,列继续未排序 struct info { let name: String let coin: String let change: Double let price: Double } var ticker: Array<info> = [] @objc func tapChangeFun
struct info {
let name: String
let coin: String
let change: Double
let price: Double
}
var ticker: Array<info> = []
@objc func tapChangeFunction(sender: UITapGestureRecognizer) {
self.ticker.sorted(by: {
$0.change > $1.change
})
DispatchQueue.main.async {
self.table.reloadData()
}
}
结构信息{
let name:String
让硬币:细绳
换零钱:双倍
价格:双倍
}
var-ticker:Array=[]
@objc func tapChangeFunction(发送方:UITapGestureRecognitizer){
self.ticker.sorted(按:{
$0.change>$1.change
})
DispatchQueue.main.async{
self.table.reloadData()
}
}
您似乎忘记了将已排序的数据分配回模型:
self.ticker = self.ticker.sorted(by: {
$0.change > $1.change
})
sorted(by:)
返回已排序的新数组,旧数组未修改,请阅读:
返回集合的元素,使用给定谓词作为元素之间的比较进行排序
或者使用变异版本排序(按:)
():
使用给定谓词作为元素之间的比较,对集合进行就地排序
旁注:
您不必异步分派
重新加载数据
,您已经在主线程上了。您似乎忘记了将排序后的数据分配回模型:
self.ticker = self.ticker.sorted(by: {
$0.change > $1.change
})
@objc func tapChangeFunction(sender: UITapGestureRecognizer) {
self.ticker = self.ticker.sorted(by: {
$0.change > $1.change
})
DispatchQueue.main.async {
self.table.reloadData()
}
}
sorted(by:)
返回已排序的新数组,旧数组未修改,请阅读:
返回集合的元素,使用给定谓词作为元素之间的比较进行排序
或者使用变异版本排序(按:)
():
使用给定谓词作为元素之间的比较,对集合进行就地排序
旁注:
您不必异步分派reloadData
,您已经在主线程上了
@objc func tapChangeFunction(sender: UITapGestureRecognizer) {
self.ticker = self.ticker.sorted(by: {
$0.change > $1.change
})
DispatchQueue.main.async {
self.table.reloadData()
}
}
使用上述功能解决此问题。。
排序方法不会改变数组的内容,它将返回一个新的数组实例
使用上述功能解决此问题。。
排序方法不会改变数组的内容,它将返回一个新的数组实例