Ios 如何根据另一个数组位置对数组进行排序?

Ios 如何根据另一个数组位置对数组进行排序?,ios,arrays,swift,sorting,Ios,Arrays,Swift,Sorting,我有一个表格视图,它的样式是右细节。因此,我有两个数组,一个用于文本标签数据,另一个用于详细文本标签 将有2个“排序方式”选项。一个将按文本标签数据排序,第二个将按详细文本标签数据排序。因此,当我对第一个数组(textLabels数组)进行排序时,第二个数组(detailtextables数组)也必须根据第一个数组进行排序 我知道如何排序数组,但如何根据另一个数组对一个数组进行排序 下面是我如何对数组进行排序的:(它是一个数组,包含日期) firstArray.sort({ (a, b) -&g

我有一个
表格视图
,它的样式是
右细节
。因此,我有两个
数组
,一个用于
文本标签
数据,另一个用于
详细文本标签

将有2个“排序方式”选项。一个将按
文本标签
数据排序,第二个将按
详细文本标签
数据排序。因此,当我对第一个
数组
textLabels数组
)进行排序时,第二个
数组(detailtextables
数组
)也必须根据第一个
数组进行排序

我知道如何排序
数组
,但如何根据另一个数组对一个
数组
进行排序

下面是我如何对
数组
进行排序的:(它是一个
数组
,包含
日期

firstArray.sort({ (a, b) -> Bool in
    a.earlierDate(b) == a
})

使用排序数组上的
positionOf
查找I排序数组中的相应索引如何?

这有点混乱,但您可以使用
枚举
同时处理索引和元素:

array1.enumerate().sort {
    return $0.element < $1.element
}.map {$0.element}

array1.enumerate().sort {
    return array2[$0.index] < array2[$1.index]
}.map {$0.element}
array1.enumerate().sort{
返回$0.element<$1.element
}.map{$0.element}
array1.enumerate().sort{
返回array2[$0.index]
但是使用一个数组确实简单得多

struct Item {
    let prop1: Int
    let prop2: String
}

var array = [
    Item(prop1: 1, prop2: "c"),
    Item(prop1: 2, prop2: "b"),
    Item(prop1: 3, prop2: "a")
]

array.sort { $0.prop1 < $1.prop1 }

array.sort { $0.prop2 < $1.prop2 }
struct项{
让我们来看一个例子:Int
让我们来看第二个例子:字符串
}
变量数组=[
项目(项目1:1,项目2:c),
项目(项目1:2,项目2:b),
项目(项目1:3,项目2:a)
]
array.sort{$0.prop1<$1.prop1}
array.sort{$0.prop2<$1.prop2}

首先,为什么不使用两个数组?因为您只有一个UITableViewCells数组,并且希望将与特定表视图单元格关联的所有数据保存在一起。这使得不需要尝试协调多个数组的排序(您要求执行的操作)

但如果你真的想这么做:

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 }
var array1=[“1”、“3”、“2”]
变量array2=[“一”、“三”、“二”]
让sortedFoo=zip(array1,array2)。排序{$0.0<$1.0}
array1=sortedFoo.map{$0.0}
array2=sortedFoo.map{$0.1}
上述代码的思想是,它将两个数组组合成一个元组数组,然后根据第一个数组中的元素对它们进行排序,然后将单个数组分解成两个单独的数组


换句话说,由于您必须将两个数组合并为一个来进行排序,因此您最好首先将它们放在一个数组中。:-

您尝试了什么,遇到了什么问题?请包括相关的代码片段。请参阅,FWIW,我建议不要有两个单独的数组,而是有一个数组,其中包含多个字段的对象。你是指字典吗?不,可能类似于
struct Item{let text,detailText:String}
甚至
[(text:String,detailText:String)]
。拥有两个数组是个错误。我是swift的新手,从未使用过结构。如何将项目添加到此类
数组
?添加了一个示例。我建议你读一读谢谢你的回答!!我尝试了这一点,在
sort
行中,我得到了以下错误:无法使用类型为“((,)->”的参数列表调用“sort”,这肯定是解决方案。