无法将“字符串”类型的值转换为预期的参数类型

Posted

技术标签:

【中文标题】无法将“字符串”类型的值转换为预期的参数类型【英文标题】:Cannot convert value of type 'String' to expected argument type 【发布时间】:2016-07-01 02:34:05 【问题描述】:

我在我的项目中创建了单独的 swift 类来收集所有必需的信息和验证,如下所示:

Config.swift

public class Config: NSObject     
    func isValidEmail(testStr:String) -> Bool 
        let emailRegEx = "[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]2,4"
        let range = testStr.rangeOfString(emailRegEx, options:.RegularExpressionSearch)
        let result = range != nil ? true : false
        return result
    

但问题是当我在另一个类中调用该函数时,我遇到了以下错误:

if (Config.isValidEmail(txtEmail.text!))

'配置'

如果我像下面那样做,会得到不同的错误。

Config.isValidEmail(txtEmail.text)

无法转换“字符串”类型的值?到预期的参数类型 '配置'

我不知道为什么。请帮我解决一下。

【问题讨论】:

Jeffery 对静态的看法是正确的,但是由于描述您尝试的内容的行无法编译,并且似乎应该说明没有这种方法,我建议您应该仔细发布有关您正在尝试的代码的更多信息使用 isValidEmail。 【参考方案1】:

您关心将isValidEmail(_:) 作为类方法调用,但它是一个实例方法。

我想你想让isValidEmail(_:) 成为一个类方法。

public class Config: NSObject 
    static func isValidEmail(testStr:String) -> Bool 
        let emailRegEx = "[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]2,4"
        let range = testStr.rangeOfString(emailRegEx, options:.RegularExpressionSearch)
        let result = range != nil ? true : false
        return result
    

注意:static 说明符。

【讨论】:

以上是关于无法将“字符串”类型的值转换为预期的参数类型的主要内容,如果未能解决你的问题,请参考以下文章

iOS-无法将“字符串”类型的值转换为预期的参数类型“数据”

无法将“字符串”类型的值转换为预期的参数类型

无法将 uibutton 类型的值转换为预期的参数字符串

无法将“字符串”类型的值转换为预期的参数类型“布尔”

无法将“字符串”类型的值转换为预期的参数类型“数据”

将录制的视频保存到照片库 - 无法将“URL”类型的值转换为预期的参数类型“字符串”