2015-01-03 2 views
2

이 코드는 이전에 작동 했었지만 이제는 위치가 0으로 돌아 오기 때문에 충돌이 계속 발생합니다. 이 오류의 출처 또는 해결 방법을 모르겠습니다. 내가 말할 수있는 것부터, 제 코드는 정확합니다. 어떤 도움이 필요합니까?신속한 위치가 되돌아 오지 않음

import UIKit 
import CoreLocation 
import MapKit 

class LocationController: UIViewController, CLLocationManagerDelegate, MKMapViewDelegate { 

    var locationManager = CLLocationManager() 

    @IBOutlet var Map: MKMapView! 

    var manager:CLLocationManager! 
    var myLocations: [CLLocation] = [] 

     override func viewDidLoad() 
     { 
      super.viewDidLoad() 

      self.Map.mapType = MKMapType.Standard 
      self.Map.showsUserLocation = true 

      //self.Map.removeAnnotations(self.theMap.annotations) 

      locationManager.delegate = self 
      locationManager.desiredAccuracy = kCLLocationAccuracyBest 
      locationManager.requestAlwaysAuthorization() 
      locationManager.startUpdatingLocation() 


      let location = self.locationManager.location 

      var latitude: Double = location.coordinate.latitude 
      var longitude: Double = location.coordinate.longitude 

      println("current latitude :: \(latitude)") 
      println("current longitude :: \(longitude)") 
     } 
+0

충돌이 발생한 행을 알려주시겠습니까? – zaph

+0

문서에서 : "위치 데이터를 검색하지 않으면이 속성의 값은 nil입니다." 반환 된 값을 처리하지 않아야합니다. – zaph

+1

다음 행을 사용하여 locationManager의 위치에 액세스하려고하면 :'location = self.locationManager.location' 바로 다음 행으로 위치 관리자의 업데이트를 시작하십시오 :'locationManager.startUpdatingLocation()'그것은 위치 관리자 의심의 여지없이 위치를받은 충분한 시간을 가지지 못했을 것입니다. 'didUpdateLocations'가 호출 될 때까지 기다렸다가 위치를 찾았는지 확인하십시오. –

답변

0

CLLocationManagerlocation 속성은 선언과 같은 : 따라서

@NSCopying var location: CLLocation! { get } 

하고 let locationnil 값 가득 할 수있다. 아마도이 선언은 Apple이 선택 사항과 관련된 인터페이스를 수정함에 따라 최근에 변경되었습니다.

nil을 준수하면서 latitudelongitude을 바인딩해야합니다.

관련 문제