Swift功能,用于移除“安全”的信标;“未知”伊贝肯 func filteredBeacons(u信标:[CLBeacon])->[CLBeacon]{ var filteredBeacons=信标//复制 var lookup=Set() 对于0..

Swift功能,用于移除“安全”的信标;“未知”伊贝肯 func filteredBeacons(u信标:[CLBeacon])->[CLBeacon]{ var filteredBeacons=信标//复制 var lookup=Set() 对于0..,swift,ibeacon,Swift,Ibeacon,中的索引,要删除任何邻近性未知的信标,只需在循环中添加以下代码段: func filteredBeacons(_ beacons: [CLBeacon]) -> [CLBeacon] { var filteredBeacons = beacons // Copy var lookup = Set<String>() for index in 0..<beacons.count { let currentBeacon = b

中的索引,要删除任何邻近性未知的信标,只需在循环中添加以下代码段:

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
}

顺便说一句,
clapproxity
是一个枚举,因此您可以只写
.unknown
而不是
clapproxity.unknown
要删除任何具有邻近性
unknown
的信标,只需在循环中添加以下代码片段:

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
}
顺便说一句,
clapproxity
是一个枚举,因此您只需编写
.unknown
而不是
clapproxity。unknown
尝试:

if currentBeacon.proximity == .unknown {
   filteredBeacons.remove(at: index)
}
func filteredBeacons(u信标:[CLBeacon])->[CLBeacon]{
var filteredBeacons=信标//复制
var lookup=Set()
对于0..中的索引,请尝试:

func filteredBeacons(u信标:[CLBeacon])->[CLBeacon]{
var filteredBeacons=信标//复制
var lookup=Set()

对于0中的索引。谢谢。但是,当我在应用中运行它时,该应用会崩溃。我不确定为什么丢弃未知会导致崩溃。关于如何修复此问题,有什么想法吗?(抱歉,我丢失了日志,因此找不到错误消息)如果在一次循环中删除两个信标,它可能会崩溃,因为索引可能超出filteredBeacons数组的长度谢谢-这是否意味着我应该创建两个循环?一个用于删除未知信标,一个用于删除重复信标?我只需颠倒逻辑。将filteredBeacons初始化为空数组d如果查找不包含标识符,则向其添加一个信标。对不起,我对Swift很陌生。您能解释一下如何将filteredBeacons初始化为空数组吗?谢谢。这是有效的,但是,当我在应用程序中运行它时,应用程序崩溃。我不确定为什么丢弃未知会导致崩溃。有没有解决方法?(抱歉,我丢失了日志,因此找不到错误消息)如果在一次循环中删除两个信标,它可能会崩溃,因为索引可能超出filteredBeacons数组的长度谢谢-这是否意味着我应该创建两个循环?一个用于删除未知信标,一个用于删除重复信标?我只需颠倒逻辑。将filteredBeacons初始化为空数组d如果查找不包含标识符,则向其添加一个信标。对不起,我对Swift非常陌生。您能否解释一下如何将filteredBeacons初始化为空数组?