当前位置: 首页 > 知识库问答 >
问题:

Swift错误"Thread 1:EXC_BAD_INSTRUCTION"和致命错误:意外地发现nil而展开可选值

贺俊杰
2023-03-14

错误"EXC_BAD_INSTRUCTION"发生和胎儿错误"致命错误:意外地发现零,同时展开可选值"。这是什么意思,我该如何修复它?

import UIKit
import MapKit
import CoreLocation

class SliderViewController: UIViewController, MKMapViewDelegate, CLLocationManagerDelegate {

    @IBOutlet weak var travelRadius: UILabel!
    @IBOutlet weak var mapKitView: MKMapView!
    @IBOutlet weak var slider: UISlider!
    private var lat : Double!
    private var long : Double!
    private var randomLatitude : Double!
    private var randomLongtitude : Double!
    let number1 : Double = 0.01449275362319 //Latitude 1 mile change
    let number2 : Double = 0.01810190649279 //Longtitude 1 mile change
    let random = Double(arc4random())/Double(UInt32.max) + 0


    var locationManager : CLLocationManager!

    var location : CLLocation!{
        didSet {
            lat = location.coordinate.latitude
            long = location.coordinate.longitude
        }
    }



    override func viewDidLoad() {
        sliderSlides(self)

错误:EXC\u错误\u指令

        locationManager = CLLocationManager()
        self.locationManager.delegate = self
        self.locationManager.desiredAccuracy = kCLLocationAccuracyBest
        self.locationManager.requestWhenInUseAuthorization()
        checkCoreLocationPermission()

        self.mapKitView.showsUserLocation = true
    }



    @IBAction func sliderSlides(sender: AnyObject) {
        let miles = Double(self.slider.value)
        let delta = miles / 69.0
        var currentRegion = self.mapKitView.region
        currentRegion.span = MKCoordinateSpan(latitudeDelta: delta, longitudeDelta: delta)
        self.mapKitView.region = currentRegion
        travelRadius.text = "\(Int(round(miles))) mi"
        randomLatitude = lat + number1*(round(miles))*random

错误:EXC_BAD_指令RANDOMLENGTIZE=long number2*(圆(英里))*(1-随机)

    }





    func checkCoreLocationPermission() {
        if CLLocationManager.authorizationStatus() == .AuthorizedWhenInUse {
            locationManager.startUpdatingLocation() //Contains location details
        } else if CLLocationManager.authorizationStatus() == .NotDetermined {
            locationManager.requestWhenInUseAuthorization()
        } else if CLLocationManager.authorizationStatus() == .Restricted {
            print("Unauthorized to use location.")
        }
    }


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


        location = locations.last

        let center = CLLocationCoordinate2D(latitude: location!.coordinate.latitude, longitude: location!.coordinate.longitude)
        let region = MKCoordinateRegion(center: center, span: MKCoordinateSpan(latitudeDelta: 1.5,
            longitudeDelta: 1.5))


        self.mapKitView.setRegion(region, animated: false)

        self.locationManager.stopUpdatingLocation()
    }
    func  locationManager(manager: CLLocationManager, didFailWithError error: NSError)
    {
        print ("Errors:" + error.localizedDescription)
    }

    override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
        if (segue.identifier == "sendLocationData") {

            let nav = segue.destinationViewController as! UINavigationController
            let addEventViewController = nav.topViewController as! DestinationViewController
            addEventViewController.latitude = randomLatitude
            addEventViewController.longitude = randomLongtitude

        }

}
}

共有1个答案

凌运恒
2023-03-14

消息“在展开可选值时意外发现nil”的意思是,您正在强制展开一个为nil的可选值。

在本例中,您将lat定义为:private var lat:Double 其中的 向编译器指示应自动展开变量。此变量在此处使用之前未设置:randomLatitude=lat number1*(圆(英里))*random,导致崩溃。

看起来视图是在设置位置之前加载的,或者可能位置nil。看到你的屏幕截图:

 类似资料:
  • 问题内容: 我在Swift 中使用了一个,但是当我尝试更改单元格标签的文本时得到了提示。 有人知道吗? 问题答案: 几乎可以肯定,您的重用标识符不正确。 从方法签名中我们可以看到,返回类型是 Implicitly Unwrapped Optional : 这由以下的感叹号决定: 因此,首先要考虑的是什么是“隐式展开的可选”? Swift编程语言告诉我们: 有时,从程序的结构中可以明显看出,在设置了

  • 我有以下代码: 其名称如下: 但是由于某种原因,我得到了以下错误 致命错误:在展开可选值时意外发现nil 在这一行: 请帮忙调试。 这个问题不同于 “致命错误:在展开可选值时意外发现为零”是什么意思? 这是一个更普遍的问题,与期权的展开有关 此问题特别适用于UIImagePickerController

  • 我在Swift中使用,但当我试图更改单元格标签的文本时,我得到了这个结果。 有人知道这件事吗?

  • 我正在使用来显示来自于一个文件恢复数据库的图像,并且当前得到了错误: 致命错误:在展开可选值时意外发现为零。 不太确定如何执行if检查以防止强制展开,因此如果有人能向我展示另一个语法示例,我将不胜感激。 还尝试将其与nil进行比较(正如文章中所建议的:“致命错误:在展开可选值时意外发现nil”是什么意思?)。

  • 我正试图运行此代码,但不断收到以下错误: 致命错误:在展开可选值时意外发现nil 我不明白这是什么意思,也不明白我为什么要得到它。有什么提示吗?