2016-09-18 6 views
2

私は場所を検索するには、次のコードを使用しています:GoogleマップAPI:文字列URL Enconding

let correctedAddress:String! = self.searchResults[(indexPath as NSIndexPath).row].addingPercentEncoding(withAllowedCharacters: CharacterSet.symbols) 

let url = URL(string: "https://maps.googleapis.com/maps/api/geocode/json?address=\(correctedAddress)&sensor=false") 

self.searchResults [(NSIndexPathなどindexPath).row]このような文字列を返します。"サンパウロ - サンパウロ州、ブラジル」

URLのパラメータである文字列は、この(符号化後)のようなものです:私はこのURLを検索する場合

https://maps.googleapis.com/maps/api/geocode/json?address=Optional(\%22State%20of%20S%C3%A3o%20Paulo%2C%20Brazil\%22)&sensor=false 

私のWebブラウザには、JSONが表示されます。だから私はそれが有効なURLであると仮定しますが、URLは(文字列:..)メソッドは、常に私はおそらく私のエンコーディングを変更する必要がゼロ

返し、私はCharacterSet.urlPathAllowedを使用してみましたが、常にnilを返します。

どのようなエンコーディングを使用する必要がありますか?それとも何か間違ったことがありますか?

+0

をあなたが解決策を考え出すでしたか?私は同じ問題があります。私は、以下の回答が助けてくれたかどうかを試してみましたが、まだそれを働かせることができませんでした。 http://stackoverflow.com/questions/34805082/nsurl-is-returning-nil-for-a-valid-url – Ben

+0

@Ben No.すでにエンコード率を使用しているので、ほとんどの回答で、 、私は解決策を得ることができませんでした – yasin

答えて

4

は、URLに

https://maps.googleapis.com/maps/api/geocode/json?address=

= falseを\%22State%20of%20S%C3%A3o%20Paulo%2C%20Brazil \%22 &センサーをオプション(...)文字列を削除するようにしてください

URLがnilを返す理由がその原因だと思います。

+0

あなたはこれを行う方法についてより具体化できますか?私はSwift 3.0アップデートで同じ問題を抱えています。私はunwrap url変数を強制しようとしましたが、クラッシュの原因にもなります。 – Ben

+0

が機能しました。私は 'let url = URL(文字列:" https://maps.googleapis.com/maps/api/geocode/json?address= "+ correctedAddress +"&sensor = false ")'に変更しました – yasin

関連する問題