【问题标题】:Sorting Boolean variable in a Struct [duplicate]在结构中对布尔变量进行排序[重复]
【发布时间】:2018-06-28 08:24:27
【问题描述】:

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”的内容(只有名称),我得到了同样的错误输出。

约翰

玫瑰

彼得

玛丽

玛丽莎

...

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

iTable = iTable.sorted { $0.itemName < $1.itemName }

_tableView.reloadData()

结果很完美!

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

约翰(真实)

彼得(真实)

玛丽(真)

玫瑰(假)

玛丽莎(假)

...

我破旧的解决方案:

创建 2 个内部表,其中 1 个包含值为“true”的所有事件,另一个包含所有值为“false”的事件。

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

【问题讨论】:

  • 那么,你得到了什么?提供一个完整的示例,让别人可以复制粘贴并开始试验,这将大大提高您获得答案的机会。
  • 想想逻辑。如果 previous.selected == true,那么它应该“在列表中上升”。如果previous.selected == false,那么它应该“向下”,对于“下一个”也是如此。然后,将 previous 和 next 与该方法进行比较: if next.selected && previous.selected { return true } else if !next.selected && previous.selected { return true } else if next.selected && !previous.selected {return false } else {//都选中 == false;在非优化但更明确的算法中返回 false}。注意:我可能已经反转了 return true/return false
  • 瓦迪安先生,这个问题没有重复。请仔细阅读这个问题。
  • 它确实是重复的......仔细阅读重复的答案就在其中。

标签: swift xcode


【解决方案1】:

试试这个:

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

【讨论】:

  • 是我所做的,但它没有对内部表的内容进行排序。
【解决方案2】:

如果你只关心selected属性,就写

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

【讨论】:

  • 我破旧的解决方案:创建 2 个内部表,其中 1 个包含所有值为“true”的事件,另一个包含所有值为“false”的事件。然后,合并 2 个内部表以获得所需的结果。
猜你喜欢
  • 2011-06-21
  • 2020-12-15
  • 2012-10-27
  • 2013-09-16
  • 1970-01-01
  • 1970-01-01
  • 2019-04-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多