CLLocation Klasse viel wie jede Klasse, die gleichzusetzen entspricht, implementiert den Operator (==)
Und Ihre andere Fragen zu beantworten, habe ich beschlossen,
einen Spielplatz mit diesem Code zu starten
import UIKit
import CoreLocation
var str = "Hello, playground"
var coordinate = CLLocationCoordinate2D.init(latitude: 42.0, longitude: 42.0)
var accuracy = CLLocationAccuracy.init(24.0)
var date = Date.init(timeIntervalSinceNow: 0)
var loc1 = CLLocation.init(coordinate: coordinate, altitude: 44.0, horizontalAccuracy: accuracy, verticalAccuracy: accuracy, timestamp: date)
var loc2 = CLLocation.init(coordinate: coordinate, altitude: 44.0, horizontalAccuracy: accuracy, verticalAccuracy: accuracy, timestamp: date)
var loc3 = CLLocation.init(latitude: 42.0, longitude: 42.0)
var loc4 = CLLocation.init(latitude: 42.0, longitude: 42.0)
var loc5 = CLLocation.init(coordinate: coordinate, altitude: 44.0, horizontalAccuracy: accuracy, verticalAccuracy: accuracy, course: .infinity, speed: 55.0, timestamp: date)
var loc6 = CLLocation.init(coordinate: coordinate, altitude: 44.0, horizontalAccuracy: accuracy, verticalAccuracy: accuracy, course: .infinity, speed: 55.0, timestamp: date)
var bool1 = loc1 == loc2 //false
var bool2 = loc2 == loc3 //false
var bool3 = loc2 == loc2 //true
var bool4 = loc1 == loc4 //false
var bool5 = loc5 == loc6 //false
und der einzige bool, der WAHR ergibt, ist bool3.
also unabhängig davon, ob die einzelnen Eigenschaften auf verschiedenen CLLocation-Objekten gleich sind, wird der Operator == die Objekte nicht als gleich sehen. Im Erraten der beste Weg, um für ein Standorte vergleichen Sie die Felder aus den CLLocation Objekte zu vergleichen, die
Durch Erben von 'NSObject'? Wenn Sie versuchen, mit zwei 'CLLocation'-Objekten' == 'aufzurufen, sehen Sie, dass die verwendete Funktion die für' NSObject' deklarierte ist: 'public func == (lhs: NSObject, rhs: NSObject) -> Bool' . Der "richtige" Weg, zwei "CLLocation" -Instanzen zu vergleichen, wäre wahrscheinlich, "distance (from:)" zu verwenden und dies mit einem "CLLocationDistance" -Schwellenwert zu vergleichen. – JAL
Wenn Sie wissen möchten, welche Eigenschaften zur Bestimmung der Gleichheit verwendet werden, sollten Sie einige Tests mit verschiedenen Werten durchführen und sehen, was die Ergebnisse sind. – rmaddy