我对信标进行测距并将其显示在我的 TableView 中。我需要检测我的应用程序何时检测到新的信标。我尝试这样做,但出了问题
var oldBeacons: [CLBeacon] = []
func locationManager(_ manager: CLLocationManager, didRangeBeacons beacons: [CLBeacon], in region: CLBeaconRegion) {
for beacon in beacons {
for oldBeacon in oldBeacons {
if beacon.minor != oldBeacon.minor, beacon.major != oldBeacon.major {
print("New Beacon")
} else {
print("Old Beacon")
}
}
}
oldBeacons = beacons
}
最佳答案
迭代两个数组并不容易,因为如果您同时看到两个信标,您会错误地认为它们是“新的”,因为其中一个与另一个不同。
我通常使用 Set 来执行此操作:
var detectedBeacons: Set<String>
func locationManager(_ manager: CLLocationManager, didRangeBeacons beacons: [CLBeacon], in region: CLBeaconRegion) {
for beacon in beacons {
let key = "\(beacon.proximityUUID) \(beacon.major) \(beacon.minor)"
if detectedBeacons.contains(key) {
print("Old Beacon")
}
else {
print("New Beacon")
detectedBeacons.insert(key)
}
}
}
关于ios - 如何检测新的iBeacon?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43789902/