gpt4 book ai didi

xcode - 在 swift 中按枚举的值对对象数组进行排序

转载 作者:搜寻专家 更新时间:2023-10-31 21:51:11 24 4
gpt4 key购买 nike

我有一组 CLBeacon 对象,它们都具有属性 .proximity。

我想通过这个包含 CLProximity 枚举的属性对数组进行排序。所以我希望所有对象都按顺序排列:IMMEDIATE、NEAR、FAR、UNKNOWN。

有没有一种方法可以在不求助于一堆 if 语句的情况下巧妙地做到这一点?

最佳答案

如果您定义了 CLProximity 的(计算只读)属性 sortIndex

extension CLProximity {
var sortIndex : Int {
switch self {
case .Immediate:
return 0
case .Near:
return 1
case .Far:
return 2
case .Unknown:
return 3
}
}
}

然后你可以对信标数组进行排序

let sortedBeacons = sorted(beacons) { $0.proximity.sortIndex < $1.proximity.sortIndex }

如果 .Unknown 是唯一需要的 CLProximity 值“特殊待遇”和所有其他可能的值(value)都在理想中相对顺序,那么您可以将属性定义简化为

extension CLProximity {
var sortIndex : Int {
return self == .Unknown ? Int.max : rawValue
}
}

关于xcode - 在 swift 中按枚举的值对对象数组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31517786/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com