Joris Kluivers

I like to build software.


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 NSURLs.

An example:

NSURLComponents *components = [NSURLComponents new];
components.scheme = @"http"; = @"";
components.path = @"/blog/2013/10/17/nsurlcomponents/";

NSURL *url = [components URL];
// url now equals:

A NSURL object is only returned if the combination of set properties on NSURLComponents result in a valid URL, nil will be returned otherwise.

Use initWithURL:resolveAgainstBaseURL: or 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: