首页 > 解决方案 > 对结构中的布尔变量进行排序

问题描述

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 个内部表以获得所需的结果。

标签: swiftxcode

解决方案


尝试这个:

let sortedTable = iTable.sorted(by: {$0.selected && !$1.selected})

推荐阅读