Swift:按多个标准排序数组(权重)

时间:2015-11-24 08:55:54

标签: xcode swift sorting swift2

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

我有一个像这样的对象

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 output:

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

我尝试使用这种方式,但似乎不起作用:

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

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

1 个答案:

答案 0 :(得分:3)

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
})