Добавьте Emoji в textView, затем Crash Swift. - PullRequest
0 голосов
/ 08 октября 2018

Я пытаюсь добавить эмодзи в textView со строковым значением, но когда я ввожу текст в приложении textView, произошел сбой и выдается ошибка:

Неустранимая ошибка: невозможно увеличить за пределы endIndex

func currentWord (_ selectedRange: NSRange, _ text: String) -> String? {
   let regex = try! NSRegularExpression(pattern: "\\S+$")
   let textRange = NSRange(location: 0, length: selectedRange.location)
   if let range = regex.firstMatch(in: text, range: textRange)?.range {
       let start = text.index(text.startIndex, offsetBy: range.location)
       // Error is on the following line
       let end = text.index(start, offsetBy: range.length)
       return String(text[start..<end])
   }
   return nil
}

когда я ввожу второй эмодзи, то вылетает 1 эта строка дает мне ошибку 2

1 Ответ

0 голосов
/ 08 октября 2018

Ваш код для вычисления String.Index неверен.Это не работает, когда не-BMP символ (например, Emoji) включен в text.

Попробуйте это:

func currentWord(_ selectedRange: NSRange, _ text: String) -> String? {
    let regex = try! NSRegularExpression(pattern: "\\S+$")
    let textRange = NSRange(location: 0, length: selectedRange.location)
    if let range = regex.firstMatch(in: text, range: textRange)?.range {
        let indexRange = Range<String.Index>(range, in: text)!
        return String(text[indexRange])
    }
    return nil
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...