Code, um das Problem zu reproduzieren:CLLocation distanceFromLocation: Gibt auf iOS 9 null zurück. Ist es ein Fehler?
-(void)testDistance {
NSLog(@"Test distance...");
CLLocation *location1 = [[CLLocation alloc] initWithLatitude:137.02954600000001 longitude:50.543728999999999];
CLLocation *location2 = [[CLLocation alloc] initWithLatitude:55.79676300 longitude:49.10834400];
CLLocationDistance distance = [location1 distanceFromLocation:location2];
NSLog(@"Distance: %lf", distance);
}
iOS 8.4 Ausgang:
Entfernung: 9021699,415204
iOS 9.1 Ausgang:
Entfernung: 0.000000
location1
und location2
sind nicht Null.
Ich suchte SO für eine ähnliche Frage, konnte aber keine finden. Sieht für mich wie ein iOS 9 Bug aus. Sind Sie einverstanden? Erhalten Sie ähnliche Ergebnisse? Ich wollte einen Fehlerbericht an Apple senden, aber ich wollte zuerst bestätigen.
Ich habe den Code auf Simulatoren (sowohl iOS 8.4 und iOS 9.1) ausgeführt. Die Systemsprache war auf Russisch eingestellt, die Region war auf Russland eingestellt.
UPDATE:lat
und lon
eingemischt werden, aus. Der Breitengrad sollte im Bereich [-90, 90] liegen. In früheren Versionen von iOS ergab sich immer noch ein Ergebnis. In iOS 9 haben sie 0
zurückgegeben. Ich denke nicht, dass dies ein guter Rückgabewert für einen solchen Fall ist, weil es ein vollkommen gültiger Wert ist. Ich denke, dass sie stattdessen einen Fehlercode zurückgeben sollten (wie sie für nil
, -1
zurückgeben). Zumindest muss es in den Dokumenten erwähnt werden. Ich beabsichtige, in naher Zukunft einen Fehlerbericht einzureichen.
Nicht ganz bekommen, was Sie vorschlagen. Könntest du bitte etwas mehr erklären? Der erste Breitengrad liegt nicht im Bereich (-90, 90). Außerdem glaube ich, dass der Code für jedes gültige Breiten-/Längenpaar funktionieren soll. – FreeNickname
137 ist der Wert für den Breitengrad Ihres Standortes1. Der Breitenbereich sollte zwischen (-90
Gültiger Bereich für Breitengrad ist ein guter Punkt, danke. Upvoted Ihre Antwort. Ich denke, ich sollte die Server-Seite unserer App überprüfen. Aber ich denke immer noch nicht, dass die Null zurück ist eine gültige Reaktion in diesem Fall. Sie geben -1 zurück, wenn das Argument null ist, also warum geben sie Null zurück (was ein normaler Rückgabewert ist), wenn die Eingabe falsch ist? – FreeNickname