首页 文章

Swift致命错误:在展开Optional值时意外发现nil

提问于
浏览
0

我有textfield,我需要把内部会话值,当我添加给我

致命错误:在展开Optional值时意外发现nil

错误

我的代码在这里

@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

}

还有原谅!在引用Outlets时

谢谢

2 回答

  • 3

    处理您的错误行,如下所示:

    self.discountField.text = data!["discount"] as? String ?? ""
    

    如果 data["discount"] 有值,它将被分配给文本字段,否则将使用空字符串 . 但它会避免由于 nil 值导致的崩溃 .

  • 1

    正如许多其他人所建议的那样,首先检查您的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!)"
    }
    

相关问题