2015-11-24 72 views
0

我已經閱讀過類似的問題/答案,但沒有一個能夠解決我的問題。Swift:按多個條件排序數組(權重)

我已經這樣

class Chat { 
    unreadMessages: Int = 0 
    messages: Int = 0 
} 

對象然後,我有聊天對象的數組,我需要由多個標準來訂購它,首先通過與研磨器的未讀消息的聊天,然後用磨碎器總聊天消息。

Es。

Obj TotMes Unread 
    Chat A 10 3 
    Chat B 1 0  
    Chat C 4 0 
    Chat D 9 9 

Desidered輸出:

Chat D 9 9 
Chat A 10 3 
Chat C 4 0 
Chat B 1 0 

我嘗試用這種alhoritm,但不似是工作:

let sorted = chats.sort({ (c1, c2) -> Bool in 
    if c1.unreadMessages > c2.unreadMessages { 
     return true 
    } 
    if c1.messages > c2.messages { 
     return true 
    }   
    return false 
}) 

有人可以解釋我什麼是錯呢?

+0

您可以通過使用謂詞規則 – Anton

+0

想想排序數組:應該發生什麼,如果'c1.unreadMessages

回答

2

你沒有條件c1.unreadMessages < c2.unreadMessages應該涵蓋所有要求:

let sorted = chats.sort({ (c1, c2) -> Bool in 
    if c1.unreadMessages > c2.unreadMessages { 
     return true 
    } else if c1.unreadMessages < c2.unreadMessages { 
     return false 
    } else if c1.messages > c2.messages { 
     return true 
    }   
    return false 
}) 
+0

該死!當然,我忘了一個條件..我的錯!謝啦! –