【问题标题】:Swift: sort array by multiple criteria (weights) [duplicate]Swift:按多个标准(权重)对数组进行排序
【发布时间】:2015-11-24 17:02:06
【问题描述】:

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

我有一个这样的对象

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

然后我有一个 Chat 对象数组,我需要按多个标准对其进行排序,首先是与未读消息聊天,然后与总消息聊天。

Es.

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

期望的输出:

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

谁能解释一下这有什么问题?

【问题讨论】:

  • 您可以使用谓词规则对数组进行排序
  • 想一想:如果c1.unreadMessages < c2.unreadMessages 会发生什么?

标签: xcode swift sorting swift2


【解决方案1】:

您没有满足所有要求的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
})

【讨论】:

  • 该死!当然我忘记了一个条件..我的错!谢谢大佬!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-27
  • 1970-01-01
  • 2012-08-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多