[SWIFT] 하나에 다른 유형의 정렬 두 배열
SWIFT하나에 다른 유형의 정렬 두 배열
해결법
-
1.당신과 같이이 작업을 수행 할 수 있습니다
당신과 같이이 작업을 수행 할 수 있습니다
class TypeA { var ID: Int init(_ id: Int) { self.ID = id } } class TypeB { var ID: Int init(_ id: Int) { self.ID = id } } struct Wrap { var ID: Int { return a?.ID ?? b?.ID ?? 0 } let a: TypeA? let b: TypeB? } var arrayA = [TypeA(1), TypeA(3), TypeA(5)] var arrayB = [TypeB(2), TypeB(4)] let sortedArray = (arrayA.map { Wrap(a: $0, b: nil) } + arrayB.map { Wrap(a: nil, b: $0)}) .sorted { $0.ID < $1.ID }
행을 선택하면 당신은 객체를 함께 확인할 수 있습니다 :
if let a = sortedArray[index].a { // TypeA row selected } else if let b = sortedArray[index].b { // TypeB row selected }
-
2.프로토콜, 빌드 및 그 공통 프로토콜 종류의 배열로 모든 일반 속성을 넣어 :
프로토콜, 빌드 및 그 공통 프로토콜 종류의 배열로 모든 일반 속성을 넣어 :
protocol HasID { var id: Int { get } } class TypeA : HasID, CustomStringConvertible { var id: Int init(_ id: Int) { self.id = id } var description : String { return ("TypeA(\(self.id))") } } class TypeB : HasID, CustomStringConvertible { var id: Int init(_ id: Int) { self.id = id } var description : String { return ("TypeB(\(self.id))") } } let typeA = [TypeA(1), TypeA(2), TypeA(5), TypeA(6)] let typeB = [TypeB(3), TypeB(4), TypeB(7)] let result: [HasID] = (typeA + typeB).sorted { $0.id < $1.id } print(result)
-
3.또는 당신은 당신이 당신의 뷰 컨트롤러에서 이러한 클래스에 확장을 정의 할 수 있습니다 HasID 프로토콜을 부담 TYPEA와 b를 입력 클래스하지 않으려면 조프 디노 대답 :
또는 당신은 당신이 당신의 뷰 컨트롤러에서 이러한 클래스에 확장을 정의 할 수 있습니다 HasID 프로토콜을 부담 TYPEA와 b를 입력 클래스하지 않으려면 조프 디노 대답 :
class TypeA { var ID: Int init(_ id: Int) { self.ID = id } } class TypeB { var ID: Int init(_ id: Int) { self.ID = id } } protocol HasID { var ID: Int { get } } // place this in your view controller extension TypeA: HasID { } extension TypeB: HasID { } var arrayA = [TypeA(1), TypeA(3), TypeA(5)] var arrayB = [TypeB(2), TypeB(4)] let sortedArray = (arrayA.map { $0 as HasID } + arrayB.map { $0 as HasID }) .sort { $0.ID < $1.ID }
from https://stackoverflow.com/questions/32975491/sort-two-arrays-of-different-types-into-one by cc-by-sa and MIT license
'SWIFT' 카테고리의 다른 글
[SWIFT] AudioMixInputParameters AVFoundation를 사용하여 각 비디오 트랙에 여러 볼륨을 설정하면 스위프트 아이폰 OS에서 작동하지 않습니다 (0) | 2020.11.08 |
---|---|
[SWIFT] 특정 텍스트의 UITextView 변화 텍스트 색상 (0) | 2020.11.08 |
[SWIFT] NSCoding를 사용하여 신속한 인 코드 튜플 (0) | 2020.11.08 |
[SWIFT] 방법 십팔년 적은 오늘 날짜를 얻을 수 있습니다 (0) | 2020.11.08 |
[SWIFT] 어떻게 수락 / 거부 EKEvent 초대를? (0) | 2020.11.08 |