[iOS] NSSortDescriptor 알아보기
NSSortDescriptor 알아보기
Swift에서는 기본적인 Array.sort 기능이 존재하지만, Objective C 언어부터 사용해온 사람이라면 NSSortDescriptor로 sorting 하는 경우가 존재할 것 이다.
필자도 위와 같은 상황인데, Objective C 에서 Swift 언어화 시키면서 테스트 했던 간략 정보 공유한다.
참고
iOS 2.0 이상부터 사용 가능함. (자세한 내용 : https://developer.apple.com/documentation/foundation/nssortdescriptor)
참고
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 |
댓글
댓글 쓰기