2016-07-01 7 views
0

я создал отдельный быстрый класс в моем проекте, чтобы собрать всю необходимую информацию и проверку следующим образом:Невозможно преобразовать значение типа «String» ожидаемого типа аргумента

Config.swift

public class Config: NSObject {  
    func isValidEmail(testStr:String) -> Bool { 
     let emailRegEx = "[A-Z0-9a-z._%+-][email protected][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!)) 

Cannot convert value of type 'String' to expected argument type 'Config'

Если бы мне понравилось это, следуйте за ним, получив другую ошибку.

Config.isValidEmail(txtEmail.text) 

Cannot convert value of type 'String?' to expected argument type 'Config'

Я не знаю, почему. Пожалуйста, помогите мне, как решить.

+0

Jeffery правильно относится к static, но поскольку строки, описывающие то, что вы пробовали, не будут компилироваться и, похоже, должны указывать, что такого метода нет, я предлагаю вам внимательно прочитать о коде, который вы пытаетесь использовать, с использованием isValidEmail. – Feldur

ответ

1

Вы заботитесь о вызове isValidEmail(_:) как метод класса, но это метод экземпляра.

Я думаю, вы хотите сделать isValidEmail(_:) метод класса.

public class Config: NSObject { 
    static func isValidEmail(testStr:String) -> Bool { 
     let emailRegEx = "[A-Z0-9a-z._%+-][email protected][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.

Смежные вопросы