Skip to content

Instantly share code, notes, and snippets.

What would you like to do?
* Example implementation
func application(application: UIApplication, openURL url: NSURL, sourceApplication: String?, annotation: AnyObject) -> Bool {
println("Launched with URL: \(url.absoluteString)")
let userDict = self.urlPathToDictionary(url.absoluteString)
//Do something with the information in userDict
return true
func urlPathToDictionary(path:String) -> [String:String]?
Takes a url in the form of: your_prefix://this_item/value1/that_item/value2/some_other_item/value3
And turns it into a dictionary in the form of:
this_item: @"value1",
that_item: @"value2",
some_other_item: @"value3"
Handles everything properly if there is a trailing slash or not.
Returns `nil` if there aren't the proper combinations of keys and pairs (must be an even number)
NOTE: This example assumes you're using ARC. If not, you'll need to add your own autorelease statements.
func urlPathToDictionary(path:String) -> [String:String]? {
//Get the string everything after the :// of the URL.
let stringNoPrefix = path.componentsSeparatedByString("://").last
//Get all the parts of the url
if var parts = stringNoPrefix?.componentsSeparatedByString("/") {
//Make sure the last object isn't empty
if parts.last == "" {
if parts.count % 2 != 0 { //Make sure that the array has an even number
return nil
var dict = [String:String]()
var key:String = ""
//Add all our parts to the dictionary
for (index, part) in parts.enumerate() {
if index % 2 != 0 {
key = part
} else {
dict[key] = part
return dict
return nil
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment