斯威夫特致命错误:意外发现零而展开的可选值

问题描述:

我有文本框,我需要把里面的会话值,当我加给我斯威夫特致命错误:意外发现零而展开的可选值

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 

} 

也属性有!在引用奥特莱斯

感谢

+0

显示discountField的声明...您可能没有实例化它。 – Woodstock

+0

@Woodstock更新了代码。 – SwiftDeveloper

+1

您的IBOutlet可能未在IB中正确连接。 – Moritz

处理你的错误路线如下:

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