OSX El Capitan(10.11.6)
Xcode 8.2
Swift version 3.0.2
を使用しております。
ある画像ファイルをダウンロードしようと
StringをNSURLにしたところ
ダウンロードされない。*URLは偽物です。
test.swift
let fugaStringURL:String = "http://fugafuga/kokono/この画像だ.png"
let encURL = NSURL(string:fugaStringURL)
print("fugaStringURL=\(fugaStringURL)")
print("encURL =\(encURL)")
表示結果:
fugaStringURL=http://fugafuga/kokono/この画像だ.png
encURL =nil
printしてみるとnil。
おかしい。URL自体は合っている模様。
どうやらSwift3になり変わったようです。
test2.swift
let fugaStringURL:String = "http://fugafuga/kokono/この画像だ.png"
let encURL = NSURL(string:fugaStringURL.addingPercentEncoding(withAllowedCharacters: NSCharacterSet.urlQueryAllowed)!)
print("fugaStringURL=\(fugaStringURL)")
print("encURL =\(encURL)")
表示結果:
fugaStringURL=http://fugafuga/kokono/この画像だ.png
encURL =Optional(http://fugafuga/kokono/%E3%81%93%E3%81%AE%E7%94%BB%E5%83%8F%E3%81%A0.png)
きちんと変換されています。
日本語が含まれるURLには注意が必要ですね。
ついでにその逆は
test3.swift
let nsStr = encURL?.absoluteString
let decodedString:String = nsStr!.removingPercentEncoding!
print("nsStr=\(nsStr)")
print("decodedString =\(decodedString)")
表示結果:
nsStr=Optional(\"http://fugafuga/kokono/%E3%81%93%E3%81%AE%E7%94%BB%E5%83%8F%E3%81%A0.png\")
decodedString =http://fugafuga/kokono/この画像だ.png
忘れそうなの書き留めておきます。