我使用以下代码验证电话号码.但我得到了以下错误.我不能再往前走了.帮助我们向前推进.

class PhoneNumberValidation: Validation {
    let PHONE_REGEX = "^\\d{3}-\\d{3}-\\d{4}$"

    func validate(value: String) -> (Bool, ValidationErrorType) {
        if let phoneTest = NSPredicate(format: "SELF MATCHES %@", PHONE_REGEX) {
            if phoneTest.evaluateWithObject(value) {
                return (true, .NoError)
            }
            return (false, .PhoneNumber)
        }
        return (false, .PhoneNumber)
    }
}

错误:swift:15:28:条件绑定中的绑定值必须是可选类型

推荐答案

是的,您的错误在下面的XCode 6.1中

Xcode error screenshot

发生此错误是因为if条件必须返回Bool类型,但在if条件中返回类型为NSPredicate,因此得到错误swift: Bound value in a conditional binding must be of Optional type,可以按如下方式解决.

    var phoneTest = NSPredicate(format: "SELF MATCHES %@", PHONE_REGEX)
         if phoneTest.evaluateWithObject(value) {
                  return (true, .NoError)
             }
                 return (false, .PhoneNumber)
            }

Email-Validations in Swift.

    func isValidEmail(testStr:String) -> Bool {
            print("validate emilId: \(testStr)")
            let emailRegEx = "^(?:(?:(?:(?: )*(?:(?:(?:\\t| )*\\r\\n)?(?:\\t| )+))+(?: )*)|(?: )+)?(?:(?:(?:[-A-Za-z0-9!#$%&’*+/=?^_'{|}~]+(?:\\.[-A-Za-z0-9!#$%&’*+/=?^_'{|}~]+)*)|(?:\"(?:(?:(?:(?: )*(?:(?:[!#-Z^-~]|\\[|\\])|(?:\\\\(?:\\t|[ -~]))))+(?: )*)|(?: )+)\"))(?:@)(?:(?:(?:[A-Za-z0-9](?:[-A-Za-z0-9]{0,61}[A-Za-z0-9])?)(?:\\.[A-Za-z0-9](?:[-A-Za-z0-9]{0,61}[A-Za-z0-9])?)*)|(?:\\[(?:(?:(?:(?:(?:[0-9]|(?:[1-9][0-9])|(?:1[0-9][0-9])|(?:2[0-4][0-9])|(?:25[0-5]))\\.){3}(?:[0-9]|(?:[1-9][0-9])|(?:1[0-9][0-9])|(?:2[0-4][0-9])|(?:25[0-5]))))|(?:(?:(?: )*[!-Z^-~])*(?: )*)|(?:[Vv][0-9A-Fa-f]+\\.[-A-Za-z0-9._~!$&'()*+,;=:]+))\\])))(?:(?:(?:(?: )*(?:(?:(?:\\t| )*\\r\\n)?(?:\\t| )+))+(?: )*)|(?: )+)?$"
            let emailTest = NSPredicate(format:"SELF MATCHES %@", emailRegEx)
            let result = emailTest.evaluateWithObject(testStr)
            return result
        } 

邮箱验证的使用:

    if isValidEmail("kirit@gmail.com"){
            print("Validate EmailID")
        }
        else{
            print("invalide EmailID")
        }

Phone-Number Validation in Swift

    func validate(value: String) -> Bool {
            let PHONE_REGEX = "^\\d{3}-\\d{3}-\\d{4}$"
            let phoneTest = NSPredicate(format: "SELF MATCHES %@", PHONE_REGEX)
            let result = phoneTest.evaluate(with: value)
            return result
        }

Swift相关问答推荐

什么是Swift Concurrency中任务组的正常退出

更改正在进行的异步任务的完成(SWIFT并发)(&q;)?

在SWIFT中使用Objective-C struct 时出错(在作用域中找不到类型)

使用View()和List()无法显示影子

如何隐藏集合视图中特定的单元格,以避免出现空白空间?

Swiftui 无法从核心数据中获取数据

Swift Combine:如何在保留发布者结果顺序的同时进行收集?

有没有更快的方法来循环浏览 macOS 上已安装的应用程序?

快速递归:函数与闭包

iOS16 Bug 键盘在表单解雇 SwiftUI 时打破布局

类型 '()' 不能符合 View (除非它肯定是 View,这次没有恶作剧)

符合协议 - 错误?

Xcode:方法参数的代码完成

如何以快速 Select 器菜单样式调整图像大小

展开 List 中的 HStack 以端到端但不是从上到下,因此看起来项目之间有更宽的空间

UnkeyedEncodingContainer 和 KeyedEncodingContainerProtocol 中的 superEncoder 是什么?

如何实现 Swift 的 Comparable 协议?

Swift 动画 WithDuration 语法是什么?

使用 Swift 在 iOS 8 中为应用程序图标添加徽章

无法推断泛型参数的参数