遇到错误致命错误时:
无法打开Optional.None
追踪这一点并不容易。是什么导致了这个错误?
import UIKit
class WelcomeViewController: UIViewController {
let cornerRad:CGFloat = 10.0
@IBOutlet var label:UILabel
@IBOutlet var lvl1:UIButton
@IBOutlet var lvl2:UIButton
@IBOutlet var lvl3:UIButton
init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: NSBundle?) {
super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil)
}
override func viewDidLoad() {
super.viewDidLoad()
lvl1.layer.cornerRadius = cornerRad
lvl2.layer.cornerRadius = cornerRad
lvl3.layer.cornerRadius = cornerRad
}
}
答案 0 :(得分:8)
您收到此错误,因为您尝试访问没有值的optional
变量。
例如:
// This String is an optional, which is created as nil.
var optional: String?
var myString = optional! // Error. Optional.None
optional = "Value"
if optional {
var myString = optional! // Safe to unwrap.
}
您可以在官方Swift language guide中详细了解optionals
。
答案 1 :(得分:1)
当您看到此错误时,这是由于访问了未链接的IBOutlet等对象。它说unwrap的原因是因为当访问一个可选对象时,大多数对象被包装成允许nil的值,当访问一个可选对象时,你“解包”对象来访问它的值,这个错误表示没有赋值给变量的值。
例如在此代码中
var str:String? = nil
var empty = str!.isEmpty
声明了str变量并且?表示它可以为null,因此使其成为可选变量,您可以看到它设置为nil。然后它创建一个推断的布尔变量empty并将其设置为str!.isEmpty,其中!表示展开,因为值为零,您将看到
Can't unwrap Optional.None error
答案 2 :(得分:0)
首先检查你的故事板UILabel连接。您的UILabel对象是连接还是未连接。如果没有显示致命错误。