我的tableView
风格为Right Detail
。因此,我有2 arrays
,一个用于textLabels
数据,另一个用于detailTextLabel
。
将有2个“排序依据”选项。一个将按textLabels
数据排序,第二个将按detailTextlabels
数据排序。因此,当我对第一个array
(textLabels array
),第二个array (detailTextLables
数组) will also have to get sorted based on the first
数组`进行排序时。
我知道如何对arrays
进行排序,但如何根据另一个array
对其进行排序?
以下是我对array
的排序方式:( {1}} array
。
Dates
答案 0 :(得分:3)
首先,为什么没有两个阵列?因为您只有一个UITableViewCell数组,并且您希望将与特定表视图单元关联的所有数据保持在一起。并且它需要尝试协调多个数组的排序(您要求做的事情)是不必要的。
但如果你真的想这样做:
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 }
上面代码的想法是它将两个数组合并为一个元组数组,然后根据第一个数组中的元素对它们进行排序,然后将该单个数组分解为两个独立的数组。
换句话说,由于您必须将两个数组合并为一个以进行排序,因此您最好将它们放在一个数组中。 : - )
答案 1 :(得分:2)
如何在排序数组上使用positionOf
来查找I排序数组中的相应索引?
答案 2 :(得分:2)
这有点乱,但您可以使用 enumerate
同时处理索引和元素:
array1 .enumerate()。sort {&#xA;返回$ 0.element&lt; $ 1.element&#xA;}。map {$ 0.element}&#xA;&#xA; array1.enumerate()。sort {&#xA; return array2 [$ 0.index]&lt; array2 [$ 1.index]&#xA;}。map {$ 0.element}&#xA;
&#xA;&#xA; 但是它真的更简单/更简单array。
&#xA;&#xA; struct Item {&#xA;让prop1:Int&#xA;让prop2:String&#xA;}&#xA;&#xA; var array = [&#xA;项目(prop1:1,prop2:“c”),&#xA;项目(prop1:2,prop2:“b”),&#xA;项目(prop1:3,prop2:“a”)&#xA;]&#xA;&#xA; array.sort {$ 0.prop1&lt; $ 1.prop1}&#xA;&#xA; array.sort {$ 0.prop2&lt; $ 1.prop2}&#xA;
&#xA;