Vadian先生,这个问题没有重复。请稍加注意阅读该问题!
我想先将所有出现的事件与布尔变量值“ true”分组,然后再将所有出现的事件与布尔变量值“ false”分组。
struct myStruct {
var itemID: Date
var itemName: String
var selected: Bool
}
var iTable = [myStruct]()
我尝试通过布尔变量对iTable进行排序:
let sortedTable = iTable.sorted { (previous, next) -> Bool in
return next.selected && previous.selected
}
iTable = sortedTable
(我将改进示例以更好地向我解释)
我将内部表(结构)的内容与表视图一起使用
(itemID:111,itemName:John,已选择: true )
(itemID:477,itemName:玫瑰,已选择: false )
(itemID:431,itemName:Peter,已选择: true )
(itemID:215,itemName:Mary,已选择: true )
(itemID:442,itemName:Marisa,已选择: false )
排序后(通过布尔变量“ selected”),我列出了内部表“ iTable”的内容(仅名称),并且得到了相同的错误输出。
约翰
玫瑰
彼得
玛丽
玛丽莎
...
如果(重复If),我按名称,“ itemName”变量(按字母顺序)进行排序
iTable = iTable.sorted { $0.itemName < $1.itemName }
_tableView.reloadData()
结果完美!
以字母顺序相同的方式,但我想通过布尔变量进行排序:
约翰(是)
彼得(是)
玛丽(true)
玫瑰(假)
玛丽莎(假)
...
我的破旧解决方案:
创建2个内部表,其中1个具有所有出现的值“ true”,另一个具有所有出现的值“ false”。
然后,合并获得所需结果的2个内部表。
答案 0 :(得分:0)
尝试一下:
let sortedTable = iTable.sorted(by: {$0.selected && !$1.selected})
答案 1 :(得分:0)
如果您只关心selected
属性,只需编写
let sortedTable = iTable.sorted { (previous, next) -> Bool in
return previous.selected
}