在堆栈溢出中,我看到了寻找最接近的信标(Swift find closest Beacon by rssi)的答案。
在这里,我尝试准确地找到了Objective-C中最接近的东西。我的应用每秒钟发现一次信标,表明时间精度无法正常工作。正如他所说,RSSI将每1秒更新一次。因此,我想使用RSSI筛选最接近的信标。我将您的Swift代码转换为Objective-C,但无法正常工作。
这是Swift代码:
//Swift code
var closestBeacon: CLBeacon? = nil
for beacon in beacons {
if beacon.rssi < 0 && closestBeacon != nil && beacon.rssi > closestBeacon!.rssi {
closestBeacon = beacon as? CLBeacon
}
}
这是我转换的Objective-C代码不起作用:
CLBeacon *closest = nil;
for (CLBeacon *beacon in beacons) {
if (beacon.rssi < 0 && closest != nil && beacon.rssi > closest.rssi) {
closest = beacon;
}
}
请在这里把我弄错了。
答案 0 :(得分:0)
在两个版本的代码中都有一个错误,如@ paulw11所建议。由于我是为了回答另一个问题而写此错误的,因此这里是一个修复程序:
迅速
var closestBeacon: CLBeacon? = nil
for beacon in beacons {
if closestBeacon == nil || beacon.rssi < 0 && beacon.rssi > closestBeacon!.rssi {
closestBeacon = beacon as? CLBeacon
}
}
Objective-C
CLBeacon *closestBeacon = nil;
for (CLBeacon *beacon in beacons) {
if (closestBeacon == nil || beacon.rssi < 0 && beacon.rssi > closest.rssi) {
closestBeacon = beacon;
}
}
我也修复了原始帖子中的错误。