私は、ユーザーがUITextViewで選択した現在の単語を見つける関数を持っています。しかし、この関数を絵文字がUITextView.textプロパティにあるときに呼び出すと、クラッシュが発生します。これは、文字列とNSStringの文字数が異なるためです。絵文字のために "endIndexをインクリメントできません"
これを正しく変換するにはどうすればよいですか?
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!
}
私はこれを試しましたが、今度は "substringWithRange"メソッドを呼び出すと範囲が範囲外であると言います。何かご意見は? – cb428
Nevermind、私のエラーは、NSMakeRangeが(start、end - start)でなければならないということでした。私は(開始、終了)していた。 – cb428