错误"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
}
}
}
消息“在展开可选值时意外发现nil”的意思是,您正在强制展开一个为nil的可选值。
在本例中,您将lat
定义为:private var lat:Double
其中的
向编译器指示应自动展开变量。此变量在此处使用之前未设置:
randomLatitude=lat number1*(圆(英里))*random
,导致崩溃。
看起来视图是在设置
位置
之前加载的,或者可能位置
为nil
。看到你的屏幕截图:
问题内容: 我在Swift 中使用了一个,但是当我尝试更改单元格标签的文本时得到了提示。 有人知道吗? 问题答案: 几乎可以肯定,您的重用标识符不正确。 从方法签名中我们可以看到,返回类型是 Implicitly Unwrapped Optional : 这由以下的感叹号决定: 因此,首先要考虑的是什么是“隐式展开的可选”? Swift编程语言告诉我们: 有时,从程序的结构中可以明显看出,在设置了
我有以下代码: 其名称如下: 但是由于某种原因,我得到了以下错误 致命错误:在展开可选值时意外发现nil 在这一行: 请帮忙调试。 这个问题不同于 “致命错误:在展开可选值时意外发现为零”是什么意思? 这是一个更普遍的问题,与期权的展开有关 此问题特别适用于UIImagePickerController
我在Swift中使用,但当我试图更改单元格标签的文本时,我得到了这个结果。 有人知道这件事吗?
我正在使用来显示来自于一个文件恢复数据库的图像,并且当前得到了错误: 致命错误:在展开可选值时意外发现为零。 不太确定如何执行if检查以防止强制展开,因此如果有人能向我展示另一个语法示例,我将不胜感激。 还尝试将其与nil进行比较(正如文章中所建议的:“致命错误:在展开可选值时意外发现nil”是什么意思?)。
我正试图运行此代码,但不断收到以下错误: 致命错误:在展开可选值时意外发现nil 我不明白这是什么意思,也不明白我为什么要得到它。有什么提示吗?