Arrays 在swift 3中移动数组末尾的一些对象
我有一个对话列表,需要根据上次更新的时间进行排序。我能够做到这一点,但现在我还需要添加一个检查,如果用户未包括在对话中,那么它应该出现在列表的末尾Arrays 在swift 3中移动数组末尾的一些对象,arrays,swift,Arrays,Swift,我有一个对话列表,需要根据上次更新的时间进行排序。我能够做到这一点,但现在我还需要添加一个检查,如果用户未包括在对话中,那么它应该出现在列表的末尾 func sortConversationList () { self.conversationList = self.conversationList.sorted(by: { $0.lastupdatedTime! > $1.lastupdatedTime! }) for (index, conversation) in self.
func sortConversationList () {
self.conversationList = self.conversationList.sorted(by: { $0.lastupdatedTime! > $1.lastupdatedTime! })
for (index, conversation) in self.conversationList.enumerated() {
if (conversation.isIncluded == kNo) {
self.conversationList.move(at: index, to: self.conversationList.endIndex-1)
}
}
self.tableView.reloadData()
}
mutating func move(at oldIndex: Int, to newIndex: Int) {
self.insert(self.remove(at: oldIndex), at: newIndex)
}
但这并不正常。在swift中有更好的方法吗 你的方法太复杂了。您有两个排序标准:
包括
–真
值应在假
值之前排序lastUpdateTime
–应首先对较大的值进行排序sort()
调用完成:
conversationList.sort(by: {
if $0.isIncluded != $1.isIncluded {
return $0.isIncluded
} else {
return $0.lastupdatedTime > $1.lastupdatedTime
}
})
这假设包括在内
是一个布尔变量(这是合理的)。如果是整数(如您在注释中所示)
那就更简单了:(比较):
在排序的过程中,对列表进行排序。yikesSorting工作正常,但有时isIncluded的真值位于顶部,有时为假值。我将第一个if条件更新为“if$0.isIncluded!=$1.isIncluded&$0.isIncluded!==false”,但它不起作用:-|考虑包含值1,0而不是真值。1个值应该在顶部,0个值应该在底部。@aqsaarshad:包含了什么类型的
?什么是isinclude1
?“isIncluded”是int类型。我已经编辑了我的评论。然后返回$0.isIncluded>$1。在第一种情况下包含。
conversationList.sort(by: {
($0.isIncluded, $0.lastupdatedTime) > ($1.isIncluded, $1.lastupdatedTime)
})