2015-07-25 3 views
-2

Я использую swift 2, и я пытаюсь реализовать координаты в строке.Работа с координатами: «Неустранимая ошибка: неожиданно найдено нуль при развертывании необязательного значения»

Я импортировал CoreLocation и класс CLLocationManagerDelegate.

Когда я передаю координаты непосредственно в строку (hardcoded), она работает нормально, но когда я запускаю код ниже, передавая var lat и var lon, я получаю «фатальную ошибку: неожиданно найденный nil при разворачивании необязательного значения» на var lat = String (stringInterpolationSegment: locationManager.location.coordinate.latitude)

Это код, я использую:

override func viewDidLoad() { 
    super.viewDidLoad() 
    self.locationManager.delegate = self 
    self.locationManager.desiredAccuracy = kCLLocationAccuracyBest 
    self.locationManager.requestAlwaysAuthorization() 
    self.locationManager.startUpdatingLocation() 

} 

@IBAction func GetWeatherForCurrentLocationClicked(sender: UIButton) { 

    // working with fixed location 

    // getWeatherData("http://api.openweathermap.org/data/2.5/weather?lat=31.8669407442509&lon=34.731625048476&units=metric") 

    // throwing an fatal error (unexpectedly found nil while unwrapping an Optional value)   

    var lat = String(stringInterpolationSegment: locationManager.location.coordinate.latitude) 
    var lon = String(stringInterpolationSegment: locationManager.location.coordinate.longitude) 

    getWeatherData("http://api.openweathermap.org/data/2.5/weather?lat=\(lat)lon=\(lon)&units=metric") 


} 

Может кто-нибудь помочь мне с этим?

Спасибо,

Eric

ответ

0

Эта ошибка возникает из-за location является необязательным, так что вы должны разворачивать его. Использование нескольких развёрток в if let и необязательном сцеплении:

if let lat = locationManager.location?.coordinate.latitude, 
     lon = locationManager.location?.coordinate.latitude { 

    getWeatherData("http://api.openweathermap.org/data/2.5/weather?lat=\(lat)lon=\(lon)&units=metric") 

} 

Примечания: Вы не должны преобразовать местоположение в String для того, чтобы использовать его в интерполяции строк.