classe CLLocation un peu comme une classe qui est conforme aux assimilables, met en œuvre le (==) opérateur
Et pour répondre à vos questions, j'ai décidé de démarrer une aire de jeux avec ce code
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
et le seul bool qui donne TRUE est bool3. Donc, même si les propriétés individuelles sur les différents objets CLLocation sont les mêmes, l'opérateur == ne verra pas les objets comme égaux. Im deviner la meilleure façon de comparer pour un à des emplacements est de comparer les champs au large des objets CLLocation qui sont d'intérêt pour vous
En héritant de 'NSObject'? Si vous essayez d'appeler '==' avec deux objets 'CLLocation', vous verrez que la fonction utilisée est celle déclarée pour' NSObject': 'public func == (lhs: NSObject, rhs: NSObject) -> Bool' . La façon "correcte" de comparer deux instances de 'CLLocation' serait probablement d'utiliser' distance (from:) 'et de le comparer à un seuil' CLLocationDistance'. – JAL
Si vous voulez savoir quelles propriétés sont utilisées pour déterminer l'égalité, vous devez exécuter quelques tests avec différentes valeurs et voir les résultats. – rmaddy