iOS didUpdateLocations引发错误iOS 8.0 Swift

iOS didUpdateLocations引发错误iOS 8.0 Swift,swift,cllocationmanager,ios8,Swift,Cllocationmanager,Ios8,不知道问题是什么。我我对swift和iOS8很陌生。但总的来说,我在iOS7中与CLLocationManager没有任何问题。我已经提出了很多警告性的如果、检查和否,但我一直得到这个错误。请帮忙 所以,在一个按钮触摸动作中,我像这样启动位置管理器,以及imagepicker摄像头- //Start the location manager self.captureLocationManager?.requestWhenInUseAuthorization() s

不知道问题是什么。我我对swift和iOS8很陌生。但总的来说,我在iOS7中与CLLocationManager没有任何问题。我已经提出了很多警告性的如果、检查和否,但我一直得到这个错误。请帮忙

所以,在一个按钮触摸动作中,我像这样启动位置管理器,以及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) 

抱歉,这似乎是一个范围问题

var captureLocationManager = CLLocationManager()
var capturePlaceMark = CLPlacemark()
var captureLocation = CLLocation()
将所有核心变量作为属性有助于在didUpdateLocation、didFinishPickingImage和实际IBAction方法之间进行值的范围和传递


谢谢你的投入

我看到了一个类似的错误,因为

locationManager(经理:CLLocationManager,didUpdateLocations位置:[CLLocation]!)

有时发送位置的
nil
。这意味着您的产品线:

self.captureLocationPlaceMark=placeMarks[0]作为CLPlacemark


将抛出一个异常强制展开可选文件。有两种修复方法-使用可选的未包装位置声明委托方法,或在检查位置之前检查nil。

从iOS升级后,cllocationmanager方法出现错误,因为该方法发生了更改。 如果您使用与以下相同的解决方案:


这可能无关紧要,但可能不是。。。无论如何,这一行肯定是错误的:
如果error==nil
-您不应该检查
error
,除非
placeMarks
为nil。试着去除这部分症状,看看情况是否有所改善。如果他们不这样做,移除它仍然是正确的。为什么它是错误的?如果有错误,我是否应该停止处理其余的代码?错误是什么?你只输入了lldb提示符。是的,我试过了,那不是错误。看起来问题是由变量范围引起的。我把所有这些都作为控制器类的属性,它工作了。var captureLocationManager=CLLocationManager()var capturePlaceMark=CLPlacemark()var captureLocation=CLLocation()