2014-10-11 4 views
0

У меня проблема с получением lat и long из объекта CLLocation.CLLocation 'coord' недоступен

Странная вещь, вплоть до вчерашнего дня я был в состоянии получить лат и долго, выполнив:

func locationManager(manager: CLLocationManager!, didUpdateLocations locations: [AnyObject]!) { 

    var location: AnyObject? = locations.last 

    if let location: AnyObject = location { 
     //The println illustrates how I would retrieve the lat and long, i.e. by calling 
     //location.coordinate.latitude. 

     println(location.coordinate.latitude) 

     locationDelegate?.updateLabels(location) 
     self.locationsArray.append(location) 
    } 
} 

Это теперь перестал работать, и он бросает мне следующую ошибку компилятора:

enter image description here

Если я удалить .coordinate вызов и вызовите .latitude непосредственно на location объекта, он просто возвращает nil. Я немного потерял, чтобы, что происходит здесь ...

println(location) если я получаю следующий результат:

<+56.92239472,+1.47020887> +/- 5.00m (speed -1.00 mps/course -1.00) @ 10/11/14, 2:37:59 PM British Summer Time 

Может кто-нибудь помочь мне понять, что происходит и как получить лат и снова?

ответ

0

Использование func locationManager(manager: CLLocationManager!, didUpdateToLocation newLocation: CLLocation!, fromLocation oldLocation: CLLocation!) вместо вышеуказанного метода делегата, а затем вызов newLocation.coordinate.latitude, похоже, сработает.

0

У меня была эта проблема. Правильное решение заключается в том, чтобы поместить объекты местоположения в CLLocation, прежде чем вы разыщите свойство координат. Следующий код должен работать, хотя я его не проверял. Кроме того, может быть более элегантный способ сделать бросок; Я все еще изучаю Свифта.

func locationManager(manager: CLLocationManager!, didUpdateLocations locations: [AnyObject]!) { 

    var location: AnyObject? = locations.last 

    if let location: AnyObject = location { 
     //The println illustrates how I would retrieve the lat and long, i.e. by calling 
     //location.coordinate.latitude. 
     var loc = location as CLLocation 
     println(loc.coordinate.latitude) 

     locationDelegate?.updateLabels(loc) 
     self.locationsArray.append(loc) 
    } 
} 
Смежные вопросы