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
}
このコードでは、複製されたビーコンはすべて削除されます。私は今、このコードが近接 "不明"(すなわち非常に遠い)のビーコンも取り除きたいと思っています。誰かが私にこれをする方法を教えてもらえますか? CLクラスが必要なのは分かっています。「未知の」ビーコンを削除するスウィフト機能 - ibeacon
私はxcodeにはとても新しいので、可能であればもっと説明してください。ありがとうございました。
if currentBeacon.proximity == .unknown {
filteredBeacons.remove(at: index)
}
ところでCLProximity
は、したがって、あなただけの代わりにCLProximity.unknown
ありがとうございました。これは、しかし、私はアプリでそれを実行すると、アプリケーションがクラッシュします。なぜ未知数を捨てるとクラッシュするのか分かりません。どのようにこれを修正するための任意のアイデア? (申し訳ありませんが、私はエラーメッセージを見つけることができませんでしたログを失った) –
インデックスがfilteredBeaconsの配列の長さを超えている可能性がありますので、ループを1回通過する2つのビーコンを削除するとクラッシュする可能性があります – davidgyoung
ありがとう - 私は2つのループを作成する必要がありますか?未知のビーコンを取り除くためのものと、重複したビーコンを取り除くもの。 –