2015-12-29 4 views
0

Я использовать XCode7.2 ВерсияИОС CLLocation didUpdateLocations ошибка

Я пытаюсь использовать функцию делегат locationManager

func locationManager(manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) { 
let location = locations.last as! CLLocation 
print("%f/%f",location.coordinate.latitude,location.coordinate.longitude) 

} 

Но я получаю ошибку ниже:

Downcast from 'CLLocation?' to 'CLLocation' only unwraps optionals; did you mean to use '!'? 

Я не» t знать, как исправить эту проблему.

Быстрое изменение кода более

есть кто-то может помочь мне, как это исправить?

спасибо

ответ

0

locations.last возвращаемый тип CLLocation? и то потому, что массив может иметь на всех элементов. В состоянии ошибки вы не должны подавать дополнительный тип к не желанию, когда вы можете просто разворачивать его, делая это:

let location = locations.last! 

Имейте в виду, что с помощью описанного выше метода может привести к исключению и всегда рекомендуется использовать дополнительный развёрток

if let location = locations.last{ 
    print("%f/%f",location.coordinate.latitude,location.coordinate.longitude) 
} 
+0

благодарит за ваш ответ. Если я использую опционально, я получу другую ошибку: var location? : CLLocation = locations.last error: show: последовательные инструкции в строке должны быть разделены символом ';' – dickfala

+0

Вы используете опционально неправильно. Это должно быть 'var location: CLLocation? = ... ' –

+0

извините, у меня есть другая ошибка ... Orz .... var местоположение: CLLocation? = locations.last lngLb.text = String (формат: "% f", (location? .coordinate.longitude)!) latLb.text = String (формат: "% f", (location ?.coordinate.latitude)!) он покажет ошибку: переменная 'location' никогда не мутировалась; рассмотрите возможность изменения «let» константы – dickfala

Смежные вопросы