Ich habe eine Funktion, die das aktuelle Wort findet, das ein Benutzer in einem UITextView ausgewählt hat. Wenn ich diese Funktion jedoch aufruft, wenn sich ein Emoji in der Eigenschaft UITextView.text befindet, sehe ich einen Absturz. Ich glaube, das liegt an den unterschiedlichen Zeichenzahlen in String vs NSString."EndIndex kann nicht inkrementiert werden" wegen Emoji
Wie kann ich das richtig konvertieren?
func currentWord() -> String {
let cursorPosition = selectedRange.location
let separationCharacters = NSCharacterSet(charactersInString: " ")
// crash occurs here
let beginRange = Range(text.startIndex.advancedBy(0) ..< text.startIndex.advancedBy(cursorPosition))
let endRange = Range(text.startIndex.advancedBy(cursorPosition) ..< text.startIndex.advancedBy(text.characters.count))
let beginPhrase = text.substringWithRange(beginRange)
let endPhrase = text.substringWithRange(endRange)
let beginWords = beginPhrase.componentsSeparatedByCharactersInSet(separationCharacters)
let endWords = endPhrase.componentsSeparatedByCharactersInSet(separationCharacters)
return beginWords.last! + endWords.first!
}
Ich versuchte dies, aber jetzt sagt es der Bereich ist außerhalb der Grenzen, wenn ich "substringWithRange" -Methode aufrufen. Irgendwelche Gedanken? – cb428
Nevermind, Mein Fehler war, dass der NSMakeRange (Start, Ende - Start) sein sollte. Ich hatte (Anfang, Ende). – cb428