无法打开'Optional.None'
Posted
技术标签:
【中文标题】无法打开\'Optional.None\'【英文标题】:Can't unwrap 'Optional.None'无法打开'Optional.None' 【发布时间】:2014-06-03 02:39:46 【问题描述】:遇到错误致命错误时:
无法打开 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
【问题讨论】:
最好显示示例代码,尤其是当您回答自己的问题时。 【参考方案1】:您收到此错误,因为您尝试访问没有值的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
的信息。
【讨论】:
【参考方案2】:当您看到此错误时,这是由于访问了未链接的 IBOutlet 等对象。它说 unwrap 的原因是因为在访问可选对象时,大多数对象都以允许 nil 值的方式包装,而在访问可选对象时,您正在“解包”对象以访问其值,此错误表示没有分配给变量的值。
例如在这段代码中
var str:String? = nil
var empty = str!.isEmpty
str 变量被声明并且 ?表示它可以为 null,因此使其成为 OPTIONAL 变量,如您所见,它被设置为 nil。然后它创建一个推断的布尔变量 empty 并将其设置为 str!.isEmpty !表示展开,由于值为 nil,您将看到
Can't unwrap Optional.None error
【讨论】:
很好解释!按照这个可以解决上面的问题【参考方案3】:首先检查您的故事板 UILabel 连接。无论您的 UILabel 对象还是已连接或未连接。如果不是,则显示致命错误。
【讨论】:
以上是关于无法打开'Optional.None'的主要内容,如果未能解决你的问题,请参考以下文章
UITextField - 无法打开 Optional.None
如何从另一个文档调用函数/无法打开 Optional.none
Swift UITableViewCell detailTextLabel.text 抛出错误“致命错误:无法打开 Optional.None”