在堆栈溢出中,我已经看到答案以查找最接近的信标(Swift查找RSSI的最接近信标(。
在这里,我试图准确地找到目标C中的最接近。我的应用程序在每个SEC中都会发现信标,时间准确性无法正常找到最接近的时间。正如他所说,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;
}
}
在这里,请在我做错的地方让我完美。
@paulw11所建议的两个版本中都有一个错误。由于我为回答另一个问题写了这个错误是一个解决方法:
Swift
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;
}
}
我也修复了原始帖子中的错误。