我的代码中有一个错误,编译器会发出警告,用消息解开可选选项
可选类型“NSDate?”的值 未拆封;你的意思是用'!' 或者 '?'?
我的代码是
let formatter = NSDateFormatter()
let dob = currUser.valueForKey(userTextFieldKeyNames[i]) as? NSDate
let dobText = formatter.stringFromDate(dob) //compiler says i need to unwrap dob using ! or ? ... but why am i forced to use ! rather than ? here
field.text = dobText
我想用?如果 dob 为 nil,则展开 dob 以允许对 dobText 的分配失败。编译器的消息表明我可以使用 ! 或者 ?但只有我用 dob 才开心!展开。如果我尝试使用dob?编译器抱怨并强迫我使用!
如果我强制展开 dob 并且它是 nil,那不会导致 formatter.stringFromDate(dob!) 行崩溃。有人可以解释一下这里发生了什么以及正确的方法吗