2014-07-16 42 views
10

数组我有一个结构的数组,我希望能够通过任意两个变量的使用排序()进行排序,如果可能你如何排序结构的迅速

struct{ 
    var deadline = 0 
    var priority = 0 
} 

我在Swift编程语言的文档中查看sort(),但它只显示简单的数组。可以排序()使用或将我必须建立自己的?

+0

可能重复[Swift如何通过属性值对自定义对象数组排序](http://stackoverflow.com/questions/24130026/swift-how-to-sort-array-of-custom-objects-by-适当的价值) –

回答

23

排序相同的数组变量

排序功能内波纹管是完全一样,唯一的区别它们如何短和表现是:

完整声明:

myArr.sort { (lhs: EntryStruct, rhs: EntryStruct) -> Bool in 
    // you can have additional code here 
    return lhs.deadline < rhs.deadline 
} 

缩短闭合声明:

myArr.sort { (lhs:EntryStruct, rhs:EntryStruct) in 
    return lhs.deadline < rhs.deadline 
} 
// ... or even: 
myArr.sort { (lhs, rhs) in return lhs.deadline < rhs.deadline } 

紧凑闭合dec laration:

myArr.sort { $0.deadline < $1.deadline } 

排序到一个新的数组变量

完整声明:

let newArr = myArr.sorted { (lhs: EntryStruct, rhs: EntryStruct) -> Bool in 
    // you can have additional code here 
    return lhs.deadline < rhs.deadline 
} 

缩短闭合声明:

let newArr = myArr.sorted { (lhs:EntryStruct, rhs:EntryStruct) in 
    return lhs.deadline < rhs.deadline 
} 
// ... or even: 
let newArr = myArr.sorted { (lhs, rhs) in return lhs.deadline < rhs.deadline } 

紧凑闭合声明:

let newArr = myArr.sorted { $0.deadline < $1.deadline }