JLRoutes可简单地处理复杂的URL schemes,无需进行任何类型的URL或者字符串解析。


功能:

Simple API with minimal impact to existing codebases

Parse any number of parameters interleaved throughout the URL

Wildcard parameter support

Seamlessly parses out query string and fragment parameters and passes them along as part of the parameters dictionary

Route prioritization

Scheme namespaces to easily segment routes and block handlers for multiple schemes

Return NO from a handler block for JLRoutes to look for the next matching route

Optional verbose logging

Pretty-print the whole routing table

No dependencies other than Foundation


简单示例

// in your app delegate:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// ...
[JLRoutes addRoute:@"/user/view/:userID" handler:^BOOL(NSDictionary *parameters) {
NSString *userID = parameters[@"userID"]; // defined in the route by specifying ":userID"
// present UI for viewing user with ID 'userID'
return YES; // return YES to say we have handled the route
}];
// ...
return YES;
}

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {
return [JLRoutes routeURL:url];
}