Попытка создать функцию, использующую совпадения регулярных выражений, для возврата массива значений NSRange для использования с UITextView, чтобы позволить пользователю щелкать по сопоставленным словам с помощью анимации.
Я предполагаю, что решение состоит в том, чтобы выйти из функции, если нет совпадений с регулярным выражением. Я не могу понять, как это сделать, когда функция требует значения NSRange.
Более того, когда нет совпадений, функция регулярного выражения соответствует не возвращает ноль. Вместо этого он автоматически возвращает пустой массив, который, по-видимому, делает инструкцию guard бесполезной.
Вот функция:
func rangeOfSearchText(searchString: String, UIText: String) -> [NSRange] {
var matches:[NSTextCheckingResult]?
let regex = try! NSRegularExpression(pattern: searchString, options: .caseInsensitive)
matches = regex.matches(in: UIText, options: [], range: NSRange(location: 0, length: UIText.count))
guard let find = matches else {
//return need to find a way to break out of function if nil without returning an NSRange object...
}
var rangeArray:[NSRange] = []
for match in find {
rangeArray.append(match.range(at: 0))
}
return rangeArray
}
let sString = "z"
let longString = "I need a solution."
let test = rangeOfSearchText(searchString: sString, UIText: longString)
Вышеприведенное возвращает пустой массив.