我有一系列聊天,我想根据其中的消息的存在对它们进行排序。聊天可能没有消息,消息是可选的。
我无法解决这个问题或如何解决这个问题。我一直试图在这里找到一些好的排序代码,但失败了。
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
方法中尝试什么,都会以某种错误结束。请帮忙。
答案 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
}
> chats.sort { > guard let first = $0.someBool, let second = $1.someBool else { return false } > return true > }