Swift 删除信标的函数 "unknown" - ibeacon
Swift function that removes Beacons that are "unknown" - ibeacon
func filteredBeacons(_ beacons: [CLBeacon]) -> [CLBeacon] {
var filteredBeacons = beacons // Copy
var lookup = Set<String>()
for index in 0..<beacons.count {
let currentBeacon = beacons[index]
let identifier = "\(currentBeacon.major)/\(currentBeacon.minor)"
if lookup.contains(identifier) {
filteredBeacons.remove(at: index)
} else {
lookup.insert(identifier)
}
}
return filteredBeacons
}
我的理解是此代码将删除所有重复的信标。我现在希望这段代码也能删除接近 "unknown"(即非常远)的信标。有人可以告诉我该怎么做吗?我知道 class 需要 CLProximity。
我是 xcode 的新手,所以如果可能的话,希望得到更多解释。谢谢。
要删除任何具有邻近度的信标 unknown
,您只需在循环中添加以下代码段:
if currentBeacon.proximity == .unknown {
filteredBeacons.remove(at: index)
}
顺便说一下,CLProximity
是一个枚举,因此您可以只写 .unknown
而不是 CLProximity.unknown
尝试:
func filteredBeacons(_ beacons: [CLBeacon]) -> [CLBeacon] {
var filteredBeacons = beacons // Copy
var lookup = Set<String>()
for index in 0..<beacons.count {
let currentBeacon = beacons[index]
if currentBeacon.proximity == .unknown {
filteredBeacons.remove(at: index)
}
else {
let identifier = "\(currentBeacon.major)/\(currentBeacon.minor)"
if lookup.contains(identifier) {
filteredBeacons.remove(at: index)
} else {
lookup.insert(identifier)
}
}
}
return filteredBeacons
}
func filteredBeacons(_ beacons: [CLBeacon]) -> [CLBeacon] {
var filteredBeacons = beacons // Copy
var lookup = Set<String>()
for index in 0..<beacons.count {
let currentBeacon = beacons[index]
let identifier = "\(currentBeacon.major)/\(currentBeacon.minor)"
if lookup.contains(identifier) {
filteredBeacons.remove(at: index)
} else {
lookup.insert(identifier)
}
}
return filteredBeacons
}
我的理解是此代码将删除所有重复的信标。我现在希望这段代码也能删除接近 "unknown"(即非常远)的信标。有人可以告诉我该怎么做吗?我知道 class 需要 CLProximity。
我是 xcode 的新手,所以如果可能的话,希望得到更多解释。谢谢。
要删除任何具有邻近度的信标 unknown
,您只需在循环中添加以下代码段:
if currentBeacon.proximity == .unknown {
filteredBeacons.remove(at: index)
}
顺便说一下,CLProximity
是一个枚举,因此您可以只写 .unknown
而不是 CLProximity.unknown
尝试:
func filteredBeacons(_ beacons: [CLBeacon]) -> [CLBeacon] {
var filteredBeacons = beacons // Copy
var lookup = Set<String>()
for index in 0..<beacons.count {
let currentBeacon = beacons[index]
if currentBeacon.proximity == .unknown {
filteredBeacons.remove(at: index)
}
else {
let identifier = "\(currentBeacon.major)/\(currentBeacon.minor)"
if lookup.contains(identifier) {
filteredBeacons.remove(at: index)
} else {
lookup.insert(identifier)
}
}
}
return filteredBeacons
}