在 textView 中添加表情符号然后崩溃 Swift

Add Emoji in textView then Crash Swift

我正在尝试使用字符串值在 textView 中添加表情符号,但是当我在 textView 中输入文本时,应用程序崩溃并出现错误:

Fatal error: cannot increment beyond 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

您计算 String.Index 的代码有误。当 text.

中包含非 BMP 字符(例如,Emoji)时,它不起作用

试试这个:

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
}