二进制运算符'> ='不能应用于'String.IndexDistance?'类型的操作数 (又名'Optional <Int>')和'Int'

Jos*_*ler 15 swift

在Swift 4中我试图将UITextField的文本长度与最小长度进行比较:

if textFieldPassword.text?.count >= 8 {        
}
Run Code Online (Sandbox Code Playgroud)

但我得到了错误

Binary operator '>=' cannot be applied to operands of type 'String.IndexDistance?' (aka 'Optional<Int>') and 'Int'
Run Code Online (Sandbox Code Playgroud)


具有讽刺意味的是

textFieldPassword.text?.count == 8
Run Code Online (Sandbox Code Playgroud)

有人能帮助我吗?

vad*_*ian 29

原因是Equatable与选项一起使用而Comparable不是.你必须打开可选项.

一个合适且安全的解决方案是可选地绑定text属性:

if let password = textFieldPassword.text, password.count >= 8 { ... }
Run Code Online (Sandbox Code Playgroud)