Swift 3:按属性排序对象的有序列表

时间:2017-10-30 05:19:53

标签: arrays swift sorting swift3

在Swift 3中,我将我的数组定义为:

var filteredObjects = [Int: CustomObject]()

然后我用数据填充数组:

filteredObjects[filteredObjects.count] = CustomObject

现在我想按(1)属性" title"排序数组。 CustomObject的{​​{1}}和(2)浮动属性"距离" String

当我尝试:

CustomObject

它产生错误元组类型的值(键:Int,值:CustomObject)没有成员距离

我怀疑我不能使用这样的filteredObjects.sort({ $0.distance < $1.distance }) 方法,但我找不到解决方案。

1 个答案:

答案 0 :(得分:1)

在swift 3中: 在filteredObjects中使用sort,即字典$ 0将为您提供一个来自filteredObjects的单个对象,它将是元组类型“((key:Int,value:CustomObject),(key:Int,value:CustomObject))”。 $ 0.distance实际上会尝试在结果元组中找不到元组中的距离属性,因此您会收到错误元组类型的值(键:Int,值:CustomObject)没有成员距离

你能做的是

let resultDictionary = filteredObjects.sorted() { 
  $0.0.value.distance < $0.1.value.distance 
}

$ 0.0.value的类型为CustomObject,它具有您想要对结果进行排序的属性距离。

特别感谢@Leo Dabus。