저는 매우 iOS에 익숙해 져 있으므로 나와 함께 해주십시오.값을 반환하는 동안 iOS에서 스레딩 문제가 발생했습니다.
class ViewController: UIViewController, CLLocationManagerDelegate {
var locationManager = CLLocationManager()
var lat: Double! = 0.0
var long: Double! = 0.0
override func viewDidLoad() {
super.viewDidLoad()
self.findMyLocation()
print(self.lat)
print(self.long)
}
func findMyLocation() {
self.locationManager = CLLocationManager()
locationManager.requestAlwaysAuthorization()
locationManager.delegate = self
locationManager.desiredAccuracy = kCLLocationAccuracyBest
locationManager.startMonitoringSignificantLocationChanges()
locationManager.delegate = self
locationManager.desiredAccuracy = kCLLocationAccuracyNearestTenMeters
locationManager.requestWhenInUseAuthorization()
// Here we start locating
locationManager.startUpdatingLocation()
}
func locationManager(manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
for location in locations {
self.lat = location.coordinate.latitude
self.long = location.coordinate.longitude
}
locationManager.stopUpdatingLocation()
}
}
여기에 내 현재 위치의 위도와 경도를 얻을 수 및 지역 변수 lat
및 long
에 할당 내 간단한 뷰 컨트롤러의 다음 print
그것. 위 코드는 항상 lat
및 long
에 대해 0.0을 인쇄합니다. 그 이유는 먼저 print(lat) print(long)
이 실행되고 그 이후에 위치 가져 오기가 실행되기 때문입니다. 이 문제를 해결할 수있는 쉬운 방법이 있지만 확실하지 않습니다. 어떤 도움을 주셔서 감사합니다. 나는 중대한 중앙 파견으로 일해야한다고 가정하고있다. 내가 뭘 봐야하는지 제안 해주세요.
또한 NSLocationWhenInUseUsageDescription
을 info.plist
에 추가했습니다.
예. 나는 그 부분을 안다. 내 질문에 위치를 얻고 viewDidLoad에서 인쇄 할 때까지 기다릴 수있는 방법이 있다면? – golldy
아니요. 위치 관리자에서 좌표를 가져와야 인쇄 할 수 있습니다. –
위치 관리자가 가져온 위치 좌표를 가져 오기위한 완료 핸들러가 마음에 들지 않습니까? – golldy