stworzyłem blogu o tym, jak to w Swift 3 i zachować prosty kod i czytelny.
Można go znaleźć tutaj:
http://master-method.com/index.php/2016/11/23/sort-a-sequence-i-e-arrays-of-objects-by-multiple-properties-in-swift-3/
Można również znaleźć repozytorium GitHub z kodem tutaj:
https://github.com/jallauca/SortByMultipleFieldsSwift.playground
Istotą tego wszystkiego, powiedzmy, jeśli masz listę miejsc, będziesz w stanie to zrobić:
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
)
To bardzo dobrze, dziękuję. Może być napisany bardziej zwięźle - dodam do twojej odpowiedzi. – tobygriffin
Moja edycja Twojej odpowiedzi została odrzucona, więc oto kod, którego użyłem. : Niech sortowania = array.sorted {t1, t2 in' 'jeśli t1.isPriority == t2.isPriority {' 'powrotu t1.ordering
tobygriffin
Nie powinno się "array.sorted' być" array.sort "? – Crashalot