2017-05-14 1 views
2

우리는 orderFile이라는 사용자 정의 클래스가 있으며이 클래스에는 세 개의 특성이 들어 있다고 가정 해 보겠습니다. 내가 가까이 취소, 열 확인에 따라 상태를 기반으로 정렬됩니다 방법 :신속한 3 단계 사용자 정의 상태 값을 사용하여 사용자 정의 객체의 배열을 정렬하는 방법은 무엇입니까?

class orderFile { 
    var name = String() 
    var id = Int() 
    var status = String() 
} 

그들 중 많은

var aOrders : Array = [] 

var aOrder = orderFile() 
aOrder.name = "Order 1" 
aOrder.id = 101 
aOrder.status = "closed" 
aOrders.append(aOrder) 

var aOrder = orderFile() 
aOrder.name = "Order 2" 
aOrder.id = 101 
aOrder.status = "open" 
aOrders.append(aOrder) 

var aOrder = orderFile() 
aOrder.name = "Order 2" 
aOrder.id = 101 
aOrder.status = "cancelled" 
aOrders.append(aOrder) 

var aOrder = orderFile() 
aOrder.name = "Order 2" 
aOrder.id = 101 
aOrder.status = "confirmed" 
aOrders.append(aOrder) 

질문입니다 배열로 저장?

+1

[이 포스트 (http://stackoverflow.com/q/24130026/6521116) –

답변

1

정렬 함수에서 비교. 예를 들어

는 :

extension orderFile 
{  
    var statusSortOrder: Int 
     { return ["open","confirmed","closed","cancelled"].index(of: status) ?? 0 } 
} 

let sortedOrders = aOrders.sorted{$0.statusSortOrder < $1. statusSortOrder} 
+0

고마워, 나는이 해결책을 찾고 있었다. –

1

코드에서 각 주문을 aOrder 정의에 aOrders.append (aOder)로 저장하도록 배열을 만들어야합니다.

그런 다음 아래 코드로 다시 정렬하십시오. this.

aOrders.sorted({ $0.status > $1.status }) 
+0

감사 참조. 하지만 어떻게 이런 식으로 열리고, 확인하고, 닫고, 취소했는지에 따라 분류 될 수 있습니까? 내가 이렇게 정렬하고 싶어한다는 것을 어떻게 알 수 있을까? –

+0

이것은 문자열을 비교하여 정렬됩니다 –

0
빠른 3에 대한 답은 다음과 같습니다

오름차순 :

aOrders = aOrders.sorted(by: 
       {(first: orderFile, second: orderFile) -> Bool in 
        first.status > second.status 
       } 
      ) 

내림차순 : 당신은 때 적절한 순서를 양보하는 값을 제공해야

aOrders = aOrders.sorted(by: 
       {(first: orderFile, second: orderFile) -> Bool in 
        first.status < second.status 
       } 
      ) 
관련 문제