LoginSignup
1
0

More than 5 years have passed since last update.

マルチバイト文字を含むURLをエンコードしないでHTTP通信しようとすると落ちる

Posted at

表題通り、エンコードしないでAlamofireでGETで呼び出すと落ちる。(Alamofireに限らない。)
エラーメッセージが不親切ですぐわかんなかった。
突然の死でした。

環境

  • Swift 2.2
  • Xcode 7.3
  • Alamofire 3.3

現象 / ソースコード

エラー

fatal error: unexpectedly found nil while unwrapping an Optional value

ソースコード

以下メソッドに渡すurlを日本語等のマルチバイト文字を含むものにすると落ちる。

hoge.swift

    func send(url : String){

        Alamofire.request(.GET, url)
            .responseJSON { (response) -> Void in

                guard let object = response.result.value else {
                    return
                }

        }
    }

サンプル呼び出し

hoge.swift
let url = "https://www.google.co.jp/#safe=off&q=あいふぉんクレイドル"
self.send(url)

対策後コード

hoge.swift

    func send(url : String){

        // これ追加👇
        let encodedUrl = url.stringByAddingPercentEncodingWithAllowedCharacters(NSCharacterSet.URLQueryAllowedCharacterSet())!

        Alamofire.request(.GET, encodedUrl)
            .responseJSON { (response) -> Void in
                guard let object = response.result.value else {
                    return
                }
        }
    }

原因/参考

Alamofire crashes when url param contains special character (umlaut) #1195
iOSでパーセントエンコード(Swift)

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0