Найти ближайший маяк каждую секунду с помощью RSSI в Objective-C
В stackru я видел ответ, чтобы найти ближайший маяк ( Swift находит ближайший маяк от 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;
}
}
Вот, пожалуйста, сделай меня идеальным, где я делаю неправильно.
1 ответ
В обеих версиях кода есть ошибка, как предполагает @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;
}
}
Я также исправил ошибку в оригинальном посте.