[iOS] NSSortDescriptor 알아보기

  NSSortDescriptor 알아보기

Swift에서는 기본적인 Array.sort 기능이 존재하지만, Objective C 언어부터 사용해온 사람이라면 NSSortDescriptor로 sorting 하는 경우가 존재할 것 이다.

필자도 위와 같은 상황인데, Objective C 에서 Swift 언어화 시키면서 테스트 했던 간략 정보 공유한다.

참고
iOS 2.0 이상부터 사용 가능함. (자세한 내용 : https://developer.apple.com/documentation/foundation/nssortdescriptor)

   Sample Code (정수형, 문자형 테스트)

import UIKit
//
// NSSortDescriptor Test
// 정수형, 문자형 둘다 정상적으로 잘 됨.
let dataArray = [
    ["id":4,"sortKey":"1"],
    ["id":3,"sortKey":"2"],
    ["id":2,"sortKey":"3"],
    ["id":1,"sortKey":"4"]
]
// 데이터 확인
for data in dataArray {
    print("default Data : \(data)")
}
//MARK:-
// id(정수형)를 키로 오름차순
let descriptorID = NSSortDescriptor.init(key: "id", ascending: true)
// NSArray일 시에만 정렬이 가능함. 참고하기.
let idSortDataArray = (dataArray as NSArray).sortedArray(using: [descriptorID])
//
// 데이터 확인
for data in idSortDataArray {
    print("idSortData : \(data)")
}
/**
 결과
idSortData : {
    id = 1;
    sortKey = 4;
}
idSortData : {
    id = 2;
    sortKey = 3;
}
idSortData : {
    id = 3;
    sortKey = 2;
}
idSortData : {
    id = 4;
    sortKey = 1;
}
*/
//MARK:-
// sortKey(문자형)를 키로 내림차순
let descriptorSortKey = NSSortDescriptor.init(key: "sortKey", ascending: false)
// NSArray일 시에만 정렬이 가능함. 참고하기.
let sortKeySortDataArray = (dataArray as NSArray).sortedArray(using: [descriptorSortKey])
//
// 데이터 확인
for data in sortKeySortDataArray {
    print("sortKeySortData : \(data)")
}
/**
 결과
sortKeySortData : {
    id = 1;
    sortKey = 4;
}
sortKeySortData : {
    id = 2;
    sortKey = 3;
}
sortKeySortData : {
    id = 3;
    sortKey = 2;
}
sortKeySortData : {
    id = 4;
    sortKey = 1;
}
*/
cs

댓글

이 블로그의 인기 게시물

[iOS] 앱 아이콘 동적으로 변경하기 (Dynamically Change App icon)

[iOS18 Beta] WkWebView Cookies 못 가져오는 현상 (SameSite default Lax 변경)

[iOS] 앱스토어 등록 전, 후 URL 알아보기

[iOS] 앱실행, 앱미실행시 특정 Notification 삭제

[Xcode] add Simulators (시뮬레이터 추가하기)