Along with the new URL loading classes (
NSURLSession & family) iOS 7 and Mavericks also bring a new way of constructing URLs. Similar to what
NSDateComponents provides for a
NSDate we can now use
NSURLComponents to inspect, build and modify
NSURLComponents *components = [NSURLComponents new]; components.scheme = @"http"; components.host = @"joris.kluivers.nl"; components.path = @"/blog/2013/10/17/nsurlcomponents/"; NSURL *url = [components URL]; // url now equals: // http://joris.kluivers.nl/blog/2013/10/17/nsurlcomponents/
A NSURL object is only returned if the combination of set properties on NSURLComponents result in a valid URL,
nil will be returned otherwise.
initWithString: to create a components object with an initial set of values.
I would have linked above API to the official documentation, unfortunately like with many other recently introduced functionality nothing is available online yet. The only reference to
NSURLComponents is it’s public definition in
NSURL.h in the relevant SDKs. So I’ve published the relevant NSURLComponents declaration as a gist for easy online access.
Out of all the newly introduced API’s on both Mac and iOS this class will probably be the one I use most.
Any feedback is welcome. I’m @kluivers on twitter.
For more posts about new iOS 7 & Mavericks additions see also: