[IOS] 객체의 내부 값으로 비교하여 정렬 하는 방법

객체의 내부 값으로 비교하여 정렬하려면 Swift에서 정렬에 사용되는 메서드나 함수에 비교 클로저(closure)를 제공해야 합니다. 이 비교 클로저를 사용하여 객체의 내부 값을 비교하고 정렬 기준을 정의할 수 있습니다.

다음은 객체의 내부 값으로 비교하여 정렬하는 예시입니다:

class Person {
    var name: String
    var age: Int
    
    init(name: String, age: Int) {
        self.name = name
        self.age = age
    }
}

let people = [
    Person(name: "Alice", age: 25),
    Person(name: "Bob", age: 30),
    Person(name: "Charlie", age: 20)
]

// age 속성을 기준으로 정렬
let sortedPeople = people.sorted { $0.age < $1.age }

for person in sortedPeople {
    print("\(person.name), \(person.age)")
}` 

위의 예시에서 Person 클래스는 이름(name)과 나이(age) 속성을 가지고 있습니다. people 배열은 Person 객체들로 초기화되었습니다.

sorted() 함수를 호출할 때 비교 클로저를 전달하여 정렬 기준을 정의합니다. $0$1은 비교할 두 객체를 나타냅니다. 위의 예시에서는 $0.age < $1.age를 사용하여 나이(age)를 기준으로 정렬하였습니다. 오름차순으로 정렬되며, 나이가 작은 순서대로 정렬됩니다.

정렬된 결과를 확인하기 위해 for-in 루프를 사용하여 sortedPeople 배열을 순회하고, 객체의 이름과 나이를 출력합니다.

출력 결과는 다음과 같이 나이를 기준으로 정렬된 결과를 보여줍니다:

Charlie, 20
Alice, 25
Bob, 30

이와 같이 비교 클로저를 활용하여 객체의 내부 값을 비교하여 정렬 기준을 정의할 수 있습니다. 비교 클로저를 사용하면 객체의 내부 속성이나 다른 비교 조건을 기준으로 정렬할 수 있습니다.