如何在 Swift 中对 Eureka 库中的 MultipleSelectorRow 值进行排序?

How to sort MultipleSelectorRow values in Eureka library in Swift?

我的用例描述了用户可以 select 从 A 到 F 的多个阶段的字段的必要性。为了实现这一点,我使用了 MultipleSelectorRow n Eureka 库:

<<< MultipleSelectorRow<String>("phase") {
        [=11=].title = "Phase"
        [=11=].options = ["A", "B", "C", "D", "E", "F"]
    }

当用户 select 的任何选项我希望值显示按字母顺序 selected 选项 "A,B,C..." 时,发生的情况是始终显示文本以随机顺序,我试图通过扩展代码来实现字母顺序:

<<< MultipleSelectorRow<String>("phase") {
        [=12=].title = "Phase"
        [=12=].options = ["A", "B", "C", "D", "E", "F"]
    }.onChange { row in
        row.value = Set(row.value!.sort())
    }

表达式计算正确,但我仍然无法得到按字母顺序排序的值。

在发布问题时,我意识到 Eureka 使用 Set 来存储字段,它永远不会被排序。

在这种情况下,我更改了 cellUpdate 方法以使用如下所述的排序值更新 detailTextLabel:

<<< MultipleSelectorRow<String>("phase") {
        [=10=].title = "Phase"
        [=10=].options = ["A", "B", "C", "D", "E", "F"]
    }.cellUpdate { cell, row in
        if (row.value != nil) {
            cell.detailTextLabel?.text =  row.value!.sort().joinWithSeparator(", ")
        }
    }

我还建议修复 Eureka 库以默认按字母顺序排序。有关 https://github.com/xmartlabs/Eureka/pull/474

的更多详细信息

更新 这已在 Eureka 1.7.0 (2016.07.07)

上修复并发布