Swift:按多个条件(权重)对数组进行排序

Luc*_*nzo 1 sorting xcode swift swift2

我已经阅读过类似的问题/答案,但没有一个能解决我的问题。

我有一个这样的对象

class Chat {
    unreadMessages: Int = 0
    messages: Int = 0
}
Run Code Online (Sandbox Code Playgroud)

然后我有一组 Chat 对象,我需要按多个条件对其进行排序,首先通过与 grater 未读消息聊天,然后与 grater total 消息聊天。

埃斯。

  Obj  TotMes Unread  
  Chat A 10 3   
  Chat B  1 0     
  Chat C  4 0   
  Chat D  9 9   
Run Code Online (Sandbox Code Playgroud)

所需的输出:

Chat D  9 9   
Chat A 10 3   
Chat C  4 0  
Chat B  1 0 
Run Code Online (Sandbox Code Playgroud)

我尝试使用这种 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
})
Run Code Online (Sandbox Code Playgroud)

有人可以解释一下这有什么问题吗?

Gre*_*reg 5

您还没有达到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
})
Run Code Online (Sandbox Code Playgroud)