斯威夫特致命错误:意外发现零而展开的可选值
问题描述:
我有文本框,我需要把里面的会话值,当我加给我斯威夫特致命错误:意外发现零而展开的可选值
fatal error: unexpectedly found nil while unwrapping an Optional value
错误
我在这里的代码
@IBOutlet weak var discountField:UITextField!
func textFieldDidEndEditing(textField: MPGTextField_Swift, withSelection data: Dictionary<String,AnyObject>){
let displayDiscount : AnyObject? = data["discount"]
let addClientDiscount:String = (displayDiscount as? String)!
prefs.setObject(addClientDiscount, forKey: "addClientDiscount")
self.discountField.text = "\(addClientDiscount)" // THIS LINE GIVES ERROR
}
也属性有!在引用奥特莱斯
感谢
答
处理你的错误路线如下:
self.discountField.text = data!["discount"] as? String ?? ""
如果data["discount"]
有一个价值,它将被分配给文本字段,否则将使用空字符串。但它会避免由于nil
价值造成的崩溃。
答
至于建议的许多其他人,首先检查你的IBOutlet中的连接。
如果设置正确,则将'?' addClientDiscount如后:
self.discountField.text = "\(addClientDiscount?)"
因为如果这条线
let displayDiscount : AnyObject? = data["discount"]
给nil
则可能会出现死机。
所以要绕过那个崩溃放'''
UPDATE 作为由Eric D. 建议我们也可以这样做:
if let displayDiscount = data["discount"] {
let addClientDiscount = displayDiscount as! String
prefs.setObject(addClientDiscount!, forKey: "addClientDiscount")
self.discountField.text = "\(addClientDiscount!)"
}
+0
@eric,是的,我忘记考虑使用'如果让'。更新答案! – D4ttatraya
显示discountField的声明...您可能没有实例化它。 – Woodstock
@Woodstock更新了代码。 – SwiftDeveloper
您的IBOutlet可能未在IB中正确连接。 – Moritz