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?