Alp*_*per 3 sorting xcode swift
我有一个CLBeacon对象数组,它们都有一个属性.proximity.
我想通过包含CLProximity枚举的属性对数组进行排序.所以我希望所有对象都是立即,接近,远,未知.
有没有办法在不诉诸一堆if语句的情况下巧妙地做到这一点?
Mar*_*n R 14
如果定义(计算只读)属性sortIndex的CLProximity
extension CLProximity {
var sortIndex : Int {
switch self {
case .Immediate:
return 0
case .Near:
return 1
case .Far:
return 2
case .Unknown:
return 3
}
}
}
Run Code Online (Sandbox Code Playgroud)
然后你可以用一组信标排序
let sortedBeacons = sorted(beacons) { $0.proximity.sortIndex < $1.proximity.sortIndex }
Run Code Online (Sandbox Code Playgroud)
如果.Unknown是唯一CLProximity需要"特殊处理"的值,并且所有其他可能的值都是所需的相对顺序,那么您可以将属性定义简化为
extension CLProximity {
var sortIndex : Int {
return self == .Unknown ? Int.max : rawValue
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2389 次 |
| 最近记录: |