Swift 在结构中对布尔变量排序

Swift 在结构中对布尔变量排序,swift,xcode,Swift,Xcode,瓦迪安先生,这个问题没有重复。请仔细阅读这个问题 我想先用布尔变量值“true”对所有事件进行分组,然后用布尔变量值“false”对所有事件进行分组 我尝试按布尔变量对iTable进行排序: let sortedTable = iTable.sorted { (previous, next) -> Bool in return next.selected && previous.selected } iTable = sortedTable (我将改进示例以更好

瓦迪安先生,这个问题没有重复。请仔细阅读这个问题

我想先用布尔变量值“true”对所有事件进行分组,然后用布尔变量值“false”对所有事件进行分组

我尝试按布尔变量对iTable进行排序:

let sortedTable = iTable.sorted { (previous, next) -> Bool in
    return next.selected && previous.selected
}

iTable = sortedTable
(我将改进示例以更好地解释我)

我将内部表(struct)的内容与表视图一起使用

(itemID:111,itemName:John,选中:true

(itemID:477,itemName:Rose,选中:false

(itemID:431,itemName:Peter,选中:true

(itemID:215,itemName:Mary,选中:true

(itemID:442,itemName:Marisa,选中:false

排序后(通过布尔变量“selected”),我列出了内部表“iTable”的内容(仅名称),得到了相同的错误输出

约翰

玫瑰

彼得

玛丽

玛丽莎

If(重复If)我按名称排序,“itemName”变量(按字母顺序)

iTable=iTable.sorted{$0.itemName<$1.itemName}
_tableView.reloadData()
结果非常完美

与按字母顺序排序相同,但按布尔变量排序,我希望获得:

约翰(真的)

彼得(真的)

玛丽(真的)

罗斯(错)

玛丽莎(错)

我拙劣的解决方案:

创建两个内部表,一个包含值为“true”的所有引用,另一个包含值为“false”的所有引用

然后,合并两个内部表以获得所需的结果。

尝试以下操作:

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

如果您只关心
selected
属性,只需编写

let sortedTable = iTable.sorted { (previous, next) -> Bool in
    return previous.selected
}

那么,你得到了什么?提供一个完整的例子,有人可以复制粘贴并开始实验,这将大大提高你得到答案的机会。想想逻辑。如果previous.selected==true,则它应该“在列表中上升”。如果previous.selected==false,则它应该“向下”,与“下一步”相同。然后,将previous和next与该方法进行比较:if next.selected&&previous.selected{return true}else if!next.selected&&previous.selected{return true}否则如果next.selected&!previous.selected{return false}else{//both selected==false;return false}在非优化但更显式的算法中。注:我可能颠倒了返回真/假Vadian先生,这个问题没有重复。请仔细阅读这个问题。它确实是一个复制品。。。仔细阅读副本,答案就在其中。这是我所做的,但它没有对内部表的内容进行排序。我拙劣的解决方案是:创建两个内部表,一个表中的所有引用值为“true”,另一个表中的所有引用值为“false”。然后,合并两个内部表以获得所需的结果。
let sortedTable = iTable.sorted(by: {$0.selected && !$1.selected})
let sortedTable = iTable.sorted { (previous, next) -> Bool in
    return previous.selected
}