HIT해
[Swift 기초문법 - 25] 고차함수 sort, sorted 정렬 본문
728x90
var MyArray = [ 3,4,6,1,7,247,245,24,5,6]
var ascendingArray = myArray.sorted()
// 오름 차순으로 정렬해줌
myArray.sort()
// 배열 자체를 정렬시켜줌
// 내림차순 정렬
var descendingArray = myArray.sorted(by:>)
sorted는 내가 정렬한 배열을 반환하는 것이고
sort는 나 자체를 정렬하는 것.
sort는 오름차순 by:> 내림차순
프로젝트 사용예시
구조체간 비교가 필요한 경우 컬렉션 타입이 아니기 때문애 따로 설정없이 sort를 하면 정렬이 되지 않는다.
struct Todo : Comparalble, Hashable { // Comparalble 로 비교가 가능하게 ,Hashable로 리스트에서 사용이 가능하게
// 이게 정의되어 있어야 sort가 가능하다.
static func < (lhs : Todo, rhs :Todo) -> Bool {
return ihs.id < rhs.id
}
var id : Int
var title : String
}
import SwiftUI
struct ContentView: View {
@State var todos : [Todo] = []
@State var iAscending : Bool = true
var getToggleTitle : (Bool) -> String = { isAscending in
return isAscending ? "오름차순" : "내림차순"
}
var body: some View {
VStack{
Toggle(getToggleTitle , isOn : $isAscending)
listContent
}
.onChange(of: isAscending, perform: { (changedValue : Bool) in
print("changedValue: ", changedValue)
if changedValue {
self.todos.sort()
}else{
self.todos.sorted(by: >)
}
})
.onAppear(perform: {
self.todos = self.getDummyTodos()
// VStack이 생성될때 더미값들이 들어오게 됨
})
}
}
//MARK : - 뷰
extension ContentView {
var listContent some Vieww{
List{
ForEach(todos,id: \.self){ aTodo in
Text(aTodo.title)
}
}
}
}
//MARK: - Helpers
extension ContentView {
func getDummyTodos () -> [Todo] {
print ("getDummyTodos () called")
var todos : [Todo] = []
for i in 0...100 {
let newTodo = Todo(id: i, title: "\(i) - EolE")
todos.append(newTodo)
}
return todos
}
}
'Swift > Swift 기초문법' 카테고리의 다른 글
[Swift 기초문법 - 27] foreach enumerated (0) | 2024.08.14 |
---|---|
[Swift 기초문법 - 26] private(set) (0) | 2024.08.14 |
[Swift 기초문법 - 24] 고차함수 Higher Order Function (0) | 2024.08.14 |
[Swift 기초문법 - 23] lazy 키워드 (0) | 2024.08.14 |
[Swift 기초문법 - 22] 별칭 typealias (0) | 2024.08.14 |