※追記コメントで知りました。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()
}
}