我有一个tableView
,它的样式是Right Detail
。因此我有 2 个数组
,一个用于textLabels
数据,另一个用于detailTextLabel
。
将有 2 个“排序依据”选项。一个将按 textLabels
数据排序,第二个将按 detailTextlabels
数据排序。因此,当我对第一个 array
(textLabels array
) 进行排序时,第二个 array (detailTextLabels
array) 也必须根据在第一个
array` 上。
我知道如何对数组
进行排序,但是如何根据一个数组
对另一个进行排序?
这是我对 array
进行排序的方式:(它是 Dates
的 array
。
firstArray.sort({ (a, b) -> Bool in
a.earlierDate(b) == a
})
最佳答案
首先,为什么不用两个数组?因为您只有一个 UITableViewCells 数组,并且您希望将与特定表格 View 单元格关联的所有数据放在一起。这使得尝试协调多个数组的排序(您要执行的操作)变得不必要。
但是如果你真的想这样做:
var array1 = ["1", "3", "2"]
var array2 = ["One", "Three", "Two"]
let sortedFoo = zip(array1, array2).sort { $0.0 < $1.0 }
array1 = sortedFoo.map { $0.0 }
array2 = sortedFoo.map { $0.1 }
上面代码的想法是,它将两个数组组合成一个元组数组,然后根据第一个数组中的元素对它们进行排序,然后将该单个数组拆分回两个单独的数组。
换句话说,既然无论如何都必须将两个数组组合成一个来进行排序,那么您不妨首先将它们放在一个数组中。 :-)
关于ios - 如何根据另一个数组位置对数组进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32301573/