2014-08-30 2 views
0

Не знаете, в чем проблема. Я очень новый для быстрой и iOS8. Но в целом у меня не было проблем с CLLocationManager в iOS7. Я поставил столько предостерегающих ifs и проверок и nils, но я продолжаю получать эту ошибку. Пожалуйста помоги!iOS didUpdateLocations ошибка бросания iOS 8.0 Swift

Таким образом, на кнопку сенсорного действия, я начинаю менеджер местоположения, как это, наряду с камерой imagepicker -

//Start the location manager 
     self.captureLocationManager?.requestWhenInUseAuthorization() 
     self.captureLocationManager?.delegate = self 
     self.captureLocationManager?.desiredAccuracy = kCLLocationAccuracyNearestTenMeters 
     self.captureLocationManager?.startUpdatingLocation() 
     self.captureLocationManager?.distanceFilter = 40 
     .... 
     {image picker code} 

Это мой код для didUpdateLocations

func locationManager(manager: CLLocationManager!, didUpdateLocations locations: [AnyObject]!){ 
    if locations.count > 0 { 
     var latestLocation = locations[locations.count-1] as CLLocation 

     if !self.captureGeoCoder.geocoding { 
      self.captureGeoCoder.reverseGeocodeLocation(latestLocation, completionHandler: { (placeMarks:[AnyObject]!, error: NSError!) -> Void in 
       if error == nil{ 
        if placeMarks != nil{ 

         self.captureLocationPlaceMark = placeMarks[0] as CLPlacemark 
         println(self.objMomentModel.captureLocationPlaceMark.name) 
         self.captureLocationManager?.stopUpdatingLocation() 
         self.captureLocationManager = nil 
        } 
        else{ 
         println("0 placemarks!") 
        } 
       } 
       else{ 
        println("Oops, there was an error in reverseGeoCodeLocation!") 
       } 


      }) 
     } 
    } 
} 

но мой код крэпс на

self.captureLocationPlaceMark = placeMarks[0] as CLPlacemark 

с какой-то странной ошибки:

(lldb) 
+0

Это может быть неуместным, но она не может ... В любом случае, эта линия, конечно, не так: 'если ошибка == nil' - вы не должны изучать 'error', если' placeMarks' не равен нулю. Попробуйте просто удалить эту часть условия и посмотреть, улучшится ли ситуация. Если они этого не делают, все равно было бы правильно удалить его. – matt

+0

Почему это неправильно? Если есть ошибки, не следует ли мне продолжать работу с остальной частью кода? –

+0

Какая ошибка? Вы вводите только сообщение lldb. –

ответ

0

Извините, это было похоже на проблему с объемом.

var captureLocationManager = CLLocationManager() 
var capturePlaceMark = CLPlacemark() 
var captureLocation = CLLocation() 

внесении все основные переменные как свойства помогли с размахом и передачи значений между didUpdateLocation, didFinishPickingImage и фактическим методом IBAction.

Спасибо за входные данные.

0

Я видел подобную ошибку, потому что

locationManager(manager: CLLocationManager, didUpdateLocations locations: [CLLocation]!)

Иногда посылает nil на местах. Это означает, что ваша линия:

self.captureLocationPlaceMark = placeMarks[0] as CLPlacemark

сгенерирует исключение силы разворачивания опционального. Есть два исправления: объявите метод делегата с необязательно развернутыми местоположениями или проверьте нуль перед проверкой местоположений.

0

Метод cllocationmanager разработал ошибки после обновления с iOS, поскольку произошел смен в методе. Может быть, если вы используете один и тот же решение, которое представлено следующее:

https://stackoverflow.com/a/25699474/4133150

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