swift - 对结构中的布尔变量进行排序
问题描述
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, selected: true )
(itemID: 477, itemName: Rose, selected: false )
(itemID: 431, itemName: Peter, selected: true )
(itemID: 215, itemName: Mary, selected: true )
(itemID: 442, itemName: Marisa, selected: false )
排序后(通过布尔变量“selected”),我列出了内部表“iTable”的内容(只有名称),我得到了同样的错误输出。
约翰
玫瑰
彼得
玛丽
玛丽莎
...
如果(重复如果)我按名称排序,“itemName”变量(按字母顺序)
iTable = iTable.sorted { $0.itemName < $1.itemName }
_tableView.reloadData()
结果是完美的!
以与字母顺序相同的方式,但按布尔变量排序,我想获得:
约翰(真实)
彼得(真实)
玛丽(真实)
玫瑰(假)
魔理沙(假)
...
我破旧的解决方案:
创建 2 个内部表,其中 1 个包含所有值为“true”的事件,另一个包含所有值为“false”的事件。
然后,合并 2 个内部表以获得所需的结果。
解决方案
尝试这个:
let sortedTable = iTable.sorted(by: {$0.selected && !$1.selected})
推荐阅读
- php - Symfony 4以表单类型获取当前用户?
- digital-ocean - rclone 将文件夹移动到 digitalocean 空间中的文件夹
- grep - SH grep 仅输出某些字符串
- javascript - 在 2 个不同的组件 Angular 之间显示和隐藏
- api - Basecamp 3 API:如何获取授权用户创建的评论?
- mysql - 根据与前一天数据的差异获得前 5 个结果
- javascript - 当按钮类发生变化时,jQuery调用不同的函数
- javascript - 通过 expo 构建 apk 未安装在 android 上
- android-studio - Android Studio:“设备当前处于未知状态”
- facebook - 如何使用 Facebook API 在 1 个请求中获取多个头像