Skip to content
This repository


Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP

Sinatra/Express inspired router for Objective-C (Currently only iOS)

branch: master

Fetching latest commit…


Cannot retrieve the latest commit at this time

Octocat-spinner-32 RCRouter.xcodeproj
Octocat-spinner-32 RCRouter
Octocat-spinner-32 RCRouterTests
Octocat-spinner-32 .gitignore
Octocat-spinner-32 LICENSE


Alpha Release
(in response this stackoverflow question)

Sinatra Style Routing in Objective-C. A String based routing system not tied to (UIKit or other) Navigation Controller.
Currently only compatible with iOS4+.
Please fork and improve and send any comment/improvements.


  • Create Unit Tests
  • Create Demo App
  • Make Regex Capabilities iOS independent (Use for Cocoa)
  • Review Memory Management

Example Usage

#include "RCRouter.h"

-(id)init {

    // map routes
    [RCRouter map:@"/page/:title/" to:self with:@selector(page:)];
    [RCRouter map:@"/color/:r/:g/:b/:a/" to:self with:@selector(color:)];

    // dispatch routes
    [RCRouter dispatch:@"/page/welcome/"];
    [RCRouter dispatch:@"/color/255/255/255/255/"];


- (void)page:(NSDictionary*)params {

    NSString *pageTitle = [params objectForKey:@"title"];


- (void)color:(NSDictionary*)params {

    float red = [[params objectForKey:@"r"] floatValue];
    float green = [[params objectForKey:@"g"] floatValue];
    float blue = [[params objectForKey:@"b"] floatValue];



A delegate to the Router can be added by using the following:

[RCRouter addDelegate:self];

The following optional delegate methods are available as part of :

- (BOOL)allow:(NSString*)route;
- (void)willDispatchRoute:(NSString*)route to:(id)object;
- (void)didDispatchRoute:(NSString*)route to:(id)object;
- (void)noRouteFor:(NSString*)route;
Something went wrong with that request. Please try again.