ios SWIFT 在展开选项值时发现 nil。

Posted

技术标签:

【中文标题】ios SWIFT 在展开选项值时发现 nil。【英文标题】:ios SWIFT found nil while unwrapping option value. 【发布时间】:2016-01-12 10:59:05 【问题描述】:

在做了一些研究并在堆栈上提出其他问题后,我似乎无法弄清楚问题所在。然而我已经走了很远。

我是 Stack 的新手,所以如果我需要提供更多信息,请告诉我。

错误出现在

self.mapView.showsUserLocation = true

在编译器中说

致命错误:在展开选项值时意外发现 nil 国际数据库

如果我删除该行,错误会出现在另一个 .mapView 上。行。

当我移动出现错误的行,并将其放在:

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

应用程序打开,一切正常,除了它不显示位置,但我能够运行应用程序而不会出现任何错误。

感谢您的宝贵时间。

如果有人需要,这是我的代码。

import UIKit
import Parse
import CoreLocation
import MapKit  


class ViewController: UIViewController, CLLocationManagerDelegate, MKMapViewDelegate 

    @IBOutlet weak var mapView: MKMapView!

    let locationManager = CLLocationManager()




    override func viewDidLoad() 
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.

    self.locationManager.delegate = self

    self.locationManager.desiredAccuracy = kCLLocationAccuracyBest

    self.locationManager.requestWhenInUseAuthorization()

    self.locationManager.startUpdatingLocation()

    self.mapView.showsUserLocation = true

    






    override func didReceiveMemoryWarning() 
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    


    // MARK: - Location Delegate Methods

    func locationManager(manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) 
       let location = locations.last

        let center = CLLocationCoordinate2D(latitude: location!.coordinate.latitude, longitude: location!.coordinate.longitude)

        let region = MKCoordinateRegion(center: center, span: MKCoordinateSpan(latitudeDelta: 1, longitudeDelta: 1))

        self.mapView.setRegion(region, animated: true)

        self.locationManager.stopUpdatingLocation()
    

    func locationManager(manager: CLLocationManager, didFailWithError error: NSError) 
        print("Error:" + error.localizedDescription)
    


【问题讨论】:

mapview.delegate == nil?如果是,则将其设置在情节提要中 我很新,我该怎么做? 选择故事板->选择地图视图->显示连接检查器->拖动+叹息到地图视图的vc 是的,它是从 mapView 引用的 Outlets - 视图控制器,并且没有拼写错误 尝试退出并重新打开 Xcode 【参考方案1】:

它会在属性上返回 found nil 错误的唯一原因是该属性尚未被实例化。鉴于您使用的是 IBOutlet,我想您尚未将该属性连接到情节提要中的地图视图。

请参阅Swift: "mapView.showUserLocation = true" returns "fatal error: unexpectedly found nil while unwrapping an Optional value (lldb) " 了解更多信息。

【讨论】:

所以我不应该点击并拖动?我对 xcode 很陌生,所以我不明白使用 @IBoutlet 将地图设置为属性的另一种方法【参考方案2】:

尝试添加locationManager.requestLocation() 而不是self.mapView.showsUserLocation = true

检查您的 info.plist 是否包含“隐私 - 位置使用说明”

【讨论】:

以上是关于ios SWIFT 在展开选项值时发现 nil。的主要内容,如果未能解决你的问题,请参考以下文章

iOS Swift IBKS 信标错误:线程 1:致命错误:在展开可选值时意外发现 nil

Swift - 在展开可选值时意外发现 nil - 从委托调用变量

“致命错误:在 Swift ios 中使用 vImageBuffer_initWithCGImage 时在展开可选值时意外发现 nil”

为啥我在尝试在 iOS Swift 中向服务器发出 post 请求时收到此错误:在展开 Optional 值时意外发现 nil?

Swift:致命错误:在初始化 UIlabel 值时展开可选值时意外发现 nil

Swift:致命错误:在展开可选值时意外发现 nil