我找到了一个话题,但似乎不一样...... Value of optional type 'String?' not unwrapped; did you mean to use '!' or '?' Using Parse In Swift 2.0
我有错误
可选类型的值'字符串?'没有打开;你的意思是用吗? '!'或者'?'?
func textFieldDidEndEditing(textField: UITextField)
{
if textField.text.isEmpty || count(textField.text.stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceAndNewlineCharacterSet()))
== 0
{
textField.attributedPlaceholder = NSAttributedString(string: Messages.conversationNamePlaceholder.rawValue,
attributes:[NSForegroundColorAttributeName: UIColor.blackColor().colorWithAlphaComponent(0.54)])
}
}
答案 0 :(得分:2)
这里的问题是你试图将方法“isEmpty”应用于可选包装的字符串“textfield.text”。
您应该使用以下内容替换您的if语句:
if textField.text?.isEmpty || count(textField.text?.stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceAndNewlineCharacterSet()))
文本在textfield中是可选的,因为textfield的文本可以是nil!展开可选对象时要注意这些情况!
如果你想提供一个基本案例,你可以这样:
let text = textfield.text? ?? ""
然后你可以用这个变量替换所有出现的textfield.text,并确保它永远不会是nil!
答案 1 :(得分:1)
!标志应该避免,因此我通常会这样做:
if textField.text?.stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceAndNewlineCharacterSet()).characters.count > 0 {
...
}
使用!展开可选值,但如果值为nil,则致命错误会导致应用程序崩溃。