こちらの質問にあったコードをそのまま写し、swift3に合わせてエラーを消して実行してみると、fatal error: unexpectedly found nil while unwrapping an Optional value(lldb)となりランタイムエラーで落ちてしまいます。
しかし、左下のやつ(名前わかりません)を見ると、inputtext変数に"日本"、outputTextに"ニッポン"としっかり値が入力されています。
どうすれば良いのでしょうか?
swift
1func changeToKatakanaString(str: String) -> String { 2 3 let inputText = str as NSString 4 5 let outputText = NSMutableString() 6 7 var range: CFRange = CFRangeMake(0, inputText.length) 8 let locale: CFLocale = CFLocaleCopyCurrent() 9 10 /* トークナイザーを作成 */ 11 let tokenizer: CFStringTokenizer = CFStringTokenizerCreate(kCFAllocatorDefault, inputText as CFString, range, kCFStringTokenizerUnitWordBoundary, locale) 12 13 14 /* 最初の位置に */ 15 var tokenType: CFStringTokenizerTokenType = CFStringTokenizerGoToTokenAtIndex(tokenizer, 0) 16 17 /* 形態素解析 */ 18 while tokenType != .none { 19 range = CFStringTokenizerGetCurrentTokenRange(tokenizer) 20 21 /* ローマ字を得る */ 22 23 //ここで落ちます 24 let latin: CFTypeRef = CFStringTokenizerCopyCurrentTokenAttribute(tokenizer, kCFStringTokenizerAttributeLatinTranscription) 25 26 let romaji = latin as! NSString 27 28 /* カタカナに変換 */ 29 let furigana: NSMutableString = romaji.mutableCopy() as! NSMutableString 30 CFStringTransform(furigana as CFMutableString, nil, kCFStringTransformLatinKatakana, false) 31 32 outputText.append(furigana as String) 33 tokenType = CFStringTokenizerAdvanceToNextToken(tokenizer) 34 } 35 36 return outputText as String 37 }
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。