내가 이걸 적어놓는 이유는 채팅리스트를 만들다가 날짜를 확인해보니 제일 최근 채팅한 날짜가 맨 아래에 있어서 내림차순으로 변경하는 방법을 찾다가 적는 것이다.
Swift에서 배열이나 컬렉션의 요소를 정렬할 때 사용하는 메서드다. 기본적으로 오름차순 ( 작은 값 → 큰 값 ) 으로 정렬되는데, 이를 커스터마이징해서 원하는 순서로 바꿀 수가 있다.
sorted의 기본 사용법
sorted()
는 배열을 정렬하여 새로운 배열을 반환하는데, 기본적으로는 요소의 크기를 기준으로 오름차순으로 정렬한다.
let numbers = [3, 1, 4, 2, 5]
let sortedNumbers = numbers.sorted()
print(sortedNumbers) // 출력: [1, 2, 3, 4, 5]
예시를 보면 순서가 뒤죽박죽이어도 sorted
메서드를 통해 올바른 배열로 나타나는 것을 볼 수 있다.
저 정보를 토대로 코드를 작성해보았다.
chatList = chatList.sorted by: { chat1, chat2 in
return chat1.date > chat2.date
}
chatList = chatList.sorted(by:):
sorted(by:)
는 배열을 정렬하는 메서드이다. 이 메서드는 배열의 각 요소를 두 개씩 비교하여 정렬 순서를 결정한다.
여기서 by :
뒤에 클로저
가 들어가는데, 이 클로저가 두 개의 요소를 어떻게 비교할지 정의해준다.
{ chat1, chat2 in:
클로저는 두 개의 인자 ( chat1, chat2 )
를 받는데, 각각 chatList
배열의 두 요소를 나타낸다. 즉, 이 클로저는 chatList 배열의 두 개의 채팅을 비교하는 역할을 하는 것이다.
return chat1.date > chat2.date:
이 부분이 실제 비교를 수행하는 코드인데, chat1.date
가 chat2.date
보다 크면 ( chat1
의 날짜가 더 최근이면 ) true
를 반환하고, 그렇지 않으면 false
를 반환한다. sorted(by:)
는 비교 결과에 따라 배열의 순서를 결정한다.
chat1.date > chat2.date
이기 때문에 더 큰 날짜, 즉 결과적으로 최신 날짜가 먼저 오도록 내림차순으로 정렬하게 되는 것이다.