遇到错误致命错误时:
无法打开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
}
}
Run Code Online (Sandbox Code Playgroud)
您收到此错误,因为您尝试访问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.
}
Run Code Online (Sandbox Code Playgroud)
您可以optionals在官方Swift语言指南中阅读更多相关信息.
当您看到此错误时,这是由于访问了诸如未链接的 IBOutlet 之类的对象。它说 unwrap 的原因是因为当访问可选对象时,大多数对象都以允许 nil 值的方式包装,并且当访问可选对象时,您正在“展开”对象以访问其值,此错误表示没有分配给变量的值。
例如在这段代码中
var str:String? = nil
var empty = str!.isEmpty
Run Code Online (Sandbox Code Playgroud)
声明了 str 变量,并且 ? 表示它可以为 null,因此使其成为可选变量,并且如您所见,它被设置为 nil。然后它创建一个推断的布尔变量empty并将其设置为str!.isEmpty,其中!表示展开,由于该值为 nil,您将看到
Can't unwrap Optional.None error
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5307 次 |
| 最近记录: |