Skip to content
This repository

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Fetching contributors…

Cannot retrieve contributors at this time

file 84 lines (56 sloc) 3.47 kb

Relative Strings

NSURL is fully equipped to resolve relative strings against another URL, but sadly there's no API to go in the opposite direction. KSURLUtilities to the rescue!

- (NSString *)ks_stringRelativeToURL:(NSURL *)URL;
- (NSURL *)ks_URLRelativeToURL:(NSURL *)URL;

How's this work? Well, everyone loves examples right?

Receiver relativeToURL: Return Value
http://karelia.com/foo/bar/ http://karelia.com/ foo/bar/
http://karelia.com/foo/example.png http://karelia.com/ foo/example.png
http://karelia.com/foo/bar/ http://example.com/ http://karelia.com/foo/bar/
http://karelia.com/ http://karelia.com/foo/bar/ ../../
http://karelia.com/baz/index.xml http://karelia.com/foo/bar/ ../../baz/index.xml

Query Parameters

It's common for URLs to split their query string up into a dictionary-like series of parameters. e.g.

http://en.wikipedia.org/w/index.php?title=Main_page&action=raw

KSURLUtilities has an easy solution for getting that into a more Cocoa-friendly form:

- (NSDictionary *)ks_queryParameters;

There are also APIs for creating/deriving new URLs from a dictionary:

- (NSURL *)ks_URLWithQueryParameters:(NSDictionary *)parameters;

+ (NSURL *)ks_URLWithScheme:(NSString *)scheme
                       host:(NSString *)host
                       path:(NSString *)path
            queryParameters:(NSDictionary *)parameters;

URL Paths

Mac OS X 10.6 gave us a bunch of new URL methods like -URLByDeletingLastPathComponent. If you wanted access to this behaviour before, it necessitated much tedious mucking about with NSString path methods, or using CFURL functions. KSURLUtilities gives simple Cocoa APIs for all these tasks on 10.5 and earlier:

- (NSString *)ks_lastPathComponent;
- (NSString *)ks_pathExtension;
- (NSURL *)ks_URLByAppendingPathExtension:(NSString *)pathExtension;
- (NSURL *)ks_URLByDeletingLastPathComponent;
- (NSURL *)ks_URLByDeletingPathExtension;
- (BOOL)ks_hasDirectoryPath;
- (NSURL *)ks_URLByAppendingPathComponent:(NSString *)pathComponent isDirectory:(BOOL)isDirectory;

Host

Nothing fancy here, just a few additions to the built-in -[NSURL host] method.

- (NSURL *)ks_hostURL;

Strips a URL down to nothing but its scheme and host. e.g. http://karelia.com/foo/bar/ becomes http://karelia.com/

- (NSArray *)ks_domains;

Splits the host up into its domains. e.g. http://www.karelia.com gives (www, karelia, com)

KSURLFormatter

A basic NSFormatter subclass for handling URLs.

  • Non-complete URLs like example and example.com generate full http://example.com/ URL
  • Host URLs have a slash appended to them. e.g. http://example.com is displayed/interpreted as http://example.com/
  • Convenience +URLFromString method that takes care of unescaped characters

KSWebLocation

A simple class that represents a URL, optionally with a title attached. Features:

  • Handles Web Location files (e.g. those created by dragging a URL from Safari)
  • NSCoding
  • NSCopying

You can pull in the WebKit.framework-dependent KSWebLocationPasteboardAdditions too, to (unsurprisingly) gain support for reading and writing Web Locations from/to the pasteboard.

Something went wrong with that request. Please try again.