2016-05-05 3 views
1

Я создавал Регулярное выражение, но в не могу решить эту проблемуNSRegularExpression ошибка, я не могу использовать регулярные выражения

class Regex { 
    let internalExpression: NSRegularExpression 
    let pattern: String 

    init(_ pattern: String) { 
     self.pattern = pattern 
     var error: NSError? 
     self.internalExpression = NSRegularExpression(pattern: pattern, options: .CaseInsensitive, error: &error) 
    } 

    func test(input: String) -> Bool { 
     let matches = self.internalExpression.matchesInString(input, options: nil, range:NSMakeRange(0, countElements(input))) 
     return matches.count > 0 
    } 
} 

Вот ошибки, которые я получил:

"Cannot invoke initializer for type 'NSRegularExpression' with an argument list of type '(pattern: String, options: _, error: inout NSError?)'"

и

"Use of unresolved identifier 'countElements'"

Я только хочу, чтобы использовать эту функцию:

if usuarioView.text! =~ "/^[a-zA-Z0-9_]{3,30}$/" 

ответ

0

Есть несколько проблем с кодом. Похоже, вы переходите от более ранней версии Swift к Swift 2.x.

NSRegularExpression инициализатор изменилось, чтобы бросить свою ошибку, вместо передачи в ErrorPointer:

do { 
    self.internalExpression = try NSRegularExpression(pattern: pattern, options: .CaseInsensitive) 
} catch { 
    print(error) 
} 

Для конкретных nil для OptionType значения, используйте []. Чтобы получить длину строки, используйте input.characters.count, так как countElements был удален из Свифта:

let matches = self.internalExpression.matchesInString(input, options: [], range:NSMakeRange(0, input.characters.count)) 

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

  • Нет связанных вопросов^_^