在结构中对布尔变量进行排序

时间:2018-06-28 08:24:28

标签: swift xcode

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个内部表。

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
}