swift - 守卫让错误: Initializer for conditional binding must have Optional type not 'String'

标签 swift swift2 guard-statement

我在使用guard let 时遇到 fatal error 。错误如下:

Initializer for conditional binding must have Optional type not 'String'

下面是我使用过的代码:

@IBAction func signUpButtonPressed(sender: UIButton) {
    guard let email = emailTextField.text! where emailTextField.text!.characters.count > 0 else {
        // alert
        return
    }

    guard let password = passwordTextField.text! where passwordTextField.text!.characters.count > 0 else {
    // alert
       return
   }

     self.registerUserAsync(email, password: password)
}

最佳答案

您应该非常小心选择选项。使用 ! 你告诉 Swift 编译器你可以保证该值存在。 尝试这样做:

@IBAction func signUpButtonPressed(sender: UIButton) {
    guard let email = emailTextField.text where email.characters.count > 0 else {
        // alert
        return
    }

    guard let password = passwordTextField.text where password.characters.count > 0 else {
        // alert
        return
    }

    self.registerUserAsync(email, password: password)

Swift also introduces optional types, which handle the absence of a value. Optionals say either “there is a value, and it equals x” or “there isn’t a value at all”.

有关选项的更多信息,您可以在此处找到 https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/TheBasics.html#//apple_ref/doc/uid/TP40014097-CH5-ID309

关于swift - 守卫让错误: Initializer for conditional binding must have Optional type not 'String' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37858071/

相关文章:

swift - 有条件的预期表达

swift - 如何在 swift 中使用 guard 而不是 if

ios - 为什么我的 Table View Cell 无法显示?

ios - 尝试了解 iOS 8 中的 UIScrollView 自动布局

ios - 使用 performSegueWithIdentifier Swift 2.1 时出错

json - 我可以使用镜像设置 Swift 对象属性的值吗?

Swift 2.0 守卫给我错误

Swift - 如何避免具有父子关系的结构中的循环引用?

ios - 更改焦点上的文本字段

ios - 当从 uitableviewcell 按下 UIButton 时,如果有任何一个从其他单元格播放,则停止其他声音