根据属性存在对数组进行排序

时间:2018-04-29 20:45:05

标签: swift

我有一系列聊天,我想根据其中的消息的存在对它们进行排序。聊天可能没有消息,消息是可选的。

我无法解决这个问题或如何解决这个问题。我一直试图在这里找到一些好的排序代码,但失败了。

chats.sort {
     guard let first = $0.messages, let second = $1.messages else { return false }
     return first && !second
}

错误:Cannot convert value of type '[Message]' to expected argument type 'Bool'

无论我在sort方法中尝试什么,都会以某种错误结束。请帮忙。

2 个答案:

答案 0 :(得分:1)

您希望根据messages是否nil进行排序。

chats.sort { return $0.messages != nil && $1.messages == nil }

答案 1 :(得分:0)

问题在于,您的结果中messages不是Bool个实例。

你试着说:

  

[留言]而非[留言]

斯威夫特不理解你。

可能您尝试以obj-c样式(或不是)检查'messages'参数。 Swift不允许使用隐式转换来检查nil值。

可能的解决方案之一: 1.如果您尝试使用错误的参数

chats.sort {
     guard let first = $0.someBool, let second = $1.someBool else { return false }
     return first && !second
}
  1. check nil
  2. >  chats.sort {
    >              guard let first = $0.someBool, let second = $1.someBool else { return false }
    >              return true
    >         }