Я создал запись в блоге о том, как это в Swift 3 и сохранить простой код и читаемый.
Вы можете найти его здесь:
http://master-method.com/index.php/2016/11/23/sort-a-sequence-i-e-arrays-of-objects-by-multiple-properties-in-swift-3/
Вы также можете найти хранилище GitHub с кодом здесь:
https://github.com/jallauca/SortByMultipleFieldsSwift.playground
Суть всего этого, скажем, если у вас есть список мест, вы сможете это сделать:
struct Location {
var city: String
var county: String
var state: String
}
var locations: [Location] {
return [
Location(city: "Dania Beach", county: "Broward", state: "Florida"),
Location(city: "Fort Lauderdale", county: "Broward", state: "Florida"),
Location(city: "Hallandale Beach", county: "Broward", state: "Florida"),
Location(city: "Delray Beach", county: "Palm Beach", state: "Florida"),
Location(city: "West Palm Beach", county: "Palm Beach", state: "Florida"),
Location(city: "Savannah", county: "Chatham", state: "Georgia"),
Location(city: "Richmond Hill", county: "Bryan", state: "Georgia"),
Location(city: "St. Marys", county: "Camden", state: "Georgia"),
Location(city: "Kingsland", county: "Camden", state: "Georgia"),
]
}
let sortedLocations =
locations
.sorted(by:
ComparisonResult.flip <<< Location.stateCompare,
Location.countyCompare,
Location.cityCompare
)
Это очень хорошее спасибо. Его можно написать более кратко - я добавлю к вашему ответу. – tobygriffin
Мое редактирование ответа было отклонено, так что вот код, который я использовал. 'пусть отсортированный = array.sorted {t1, t2 в' ' если t1.isPriority == t2.isPriority { '' вернуть t1.ordering
tobygriffin
Не следует ли 'array.sorted' быть' array.sort'? – Crashalot