Swift 2でiOS 9の特定の条件の通信でエラーになる。nilが帰ってくる時どうすればいいのか?
下記のコードでエラーになります。
fatal error: unexpectedly found nil while unwrapping an Optional value
改善策を教えて頂けないでしょうか?
条件は
let API_KEY:String = "き"
の時だけです。
隠れてnilが帰ってきているようです。
多分、ここで落ちてます。
let myData:String = NSString(data:res, encoding: NSJapaneseEUCStringEncoding)! as string
よろしくお願いいたします。
ソースがかけていたので、少し修正いたしました。
import UIKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
let API_KEY:String = "き"
//URLエンコーディング(文字列エスケープ処理)
let searchWord:String! = API_KEY.stringByAddingPercentEscapesUsingEncoding(NSUTF8StringEncoding)
// 通信先のURLを生成.
let myUrl:NSURL = NSURL(string:"http://www.social-ime.com/api/?string=\(searchWord)")!
// リクエストを生成.
let myRequest:NSURLRequest = NSURLRequest(URL: myUrl)
// 送信処理を始める.
let res:NSData = try! NSURLConnection.sendSynchronousRequest(myRequest, returningResponse: nil) as? NSData
// 返ってきたデータを文字列に変換.
let myData:String = NSString(data:res, encoding: NSJapaneseEUCStringEncoding)! as String
// 戻ってきた文字列の確認.
print(myData)
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
http://www.social-ime.com/api/?string=%E3%81%8D
このアドレスはエラーにならず。
関連項目。
https://ja.stackoverflow.com/questions/16426/nsurlrequestで日本語を使って-帰って来たデータを受け取るところでエラーになってしまうのはなぜか