Edited at

SwiftでURLエンコードする

More than 3 years have passed since last update.

※追記コメントで知りました。iOS7以降なら下記もOKとのことシンプル!


iOS7以降OK

let encodedString = targetString.stringByAddingPercentEncodingWithAllowedCharacters(NSCharacterSet.URLQueryAllowedCharacterSet())

let decodedString = encodedString.stringByRemovingPercentEncoding;


iOS7未満対応?

APIに日本語を投げ込むときなどこんな感じで。

デフォルトの関数で用意して欲しい…。

extension String {

func escapeStr() -> String {
var raw: NSString = self
var str = CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault,raw,"[].",":/?&=;+!@#$()',*",CFStringConvertNSStringEncodingToEncoding(NSUTF8StringEncoding))
return str
}
}

class ViewController: UIViewController {

let defaultRadius = 300

@IBOutlet var searchBar: UISearchBar

override func viewDidLoad() {
super.viewDidLoad()

var query = searchBar.text
var encoded = query.escapeStr()
}

}