CLLocation 클래스의 연산자 (==)
그리고이 코드와 함께 놀이터를 시작하기로 결정 다른 질문에 대한 답변을 구현
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
및 TRUE를 산출하는 유일한 bool은 bool3입니다.
다른 CLLocation 객체의 개별 속성이 같은지 여부와 관계없이 == 연산자는 객체를 동일하게 간주하지 않습니다. 사용자가 위치를 비교하는 가장 좋은 방법을 추측하는 것은 관심있는 CLLocation 객체의 필드를 비교하는 것입니다.
NSObject에서 상속 한 경우? 두 개의'CLLocation' 객체를 가지고'=='를 호출하려고하면, 사용되는 함수는'NSObject'에 대해 선언 된 함수라는 것을 알 수 있습니다 :'public func == (lhs : NSObject, rhs : NSObject) -> Bool' . 두 개의'CLLocation' 인스턴스를 비교하는 "올바른"방법은 아마도'distance (from :)'를 사용하고 그것을'CLLocationDistance' 임계 값과 비교하는 것입니다. – JAL
평등을 결정하는 데 사용되는 속성을 알고 싶으면 여러 값으로 몇 가지 테스트를 실행하고 결과가 무엇인지 확인해야합니다. – rmaddy