Класс CLLocation, как и любой другой класс, соответствующий Equatable, реализует оператор (==)
И чтобы ответить на другие ваши вопросы, я решил запустить игровую площадку с этим кодом.
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
и единственный тип bool, который возвращает TRUE, это bool3.
поэтому независимо от того, одинаковы ли отдельные свойства разных объектов CLLocation, оператор == не будет рассматривать объекты как равные. Я предполагаю, что лучший способ для сравнения местоположений - это сравнить поля объектов CLLocation, которые вас интересуют.
person
sfbarry14
schedule
13.09.2017
NSObject
? Если вы попытаетесь вызвать==
с двумя объектамиCLLocation
, вы увидите, что используется функция, объявленная дляNSObject
:public func ==(lhs: NSObject, rhs: NSObject) -> Bool
. Правильный способ сравнить два экземпляраCLLocation
, вероятно, состоит в том, чтобы использоватьdistance(from:)
и сравнить его с порогомCLLocationDistance
. - person JAL   schedule 14.09.2017