My book on iOS interface design, Design Teardowns: Step-by-step iOS interface design walkthroughs is now available!
Parsing query parameters
While working my new app Jibber, over the last couple of weeks, I needed to quickly parse a url and obtain the query parameters.
We could do this by breaking up the String
representation of the url and creating a Dictionary
. I've wrapped that up in a convenient extension to NSURL
:
extension NSURL {
var queryDictionary: [String:String]? {
if let query = self.query {
var dict = [String:String]()
for parameter in query.componentsSeparatedByString("&") {
let components = parameter.componentsSeparatedByString("=")
if components.count == 2 {
let key = components[0].stringByReplacingPercentEscapesUsingEncoding(NSUTF8StringEncoding)!
let value = components[1].stringByReplacingPercentEscapesUsingEncoding(NSUTF8StringEncoding)!
dict[key] = value
}
}
return dict
}
else {
return nil
}
}
}
I built Jibber because debugging JSON requests in Xcode was infuriatingly painful. If you work with RESTful API, do check it out!