SwiftRoutes 1.1.1

SwiftRoutes 1.1.1

测试已测试
语言语言 SwiftSwift
许可 MIT
发布最后发布2018年11月
SPM支持 SPM

Takeshi Fujiki 维护。



SwiftRoutes

CI Status Version License Platform Carthage compatible

iOS 的 Swift 编写的 URL 路由器,灵感来源于 JLRoutes.

要求

iOS 8.0 或更高版本。

安装

Carthage

SwiftRoutes 与 Carthage 兼容。将其添加到您的 Cartfile

github "takecian/SwiftRoutes"

Cocoapods

SwiftRoutes 通过 CocoaPods 提供。要安装它,只需将以下行添加到您的 Podfile 中

pod "SwiftRoutes"

使用方法

  1. 注册路由(URL)和处理程序。
  2. 使用 URL 调用 routeUrl
  3. SwiftRoutes 将触发匹配的处理程序。
SwiftRoutes.addRoute(URL(string: "http://yourdomain.com/users/")!) { (params) -> Bool in
	let viewController = SomeViewController()
	navigationController.pushViewController(viewController, animated: true)
    return true
}

SwiftRoutes.routeUrl(URL(string: "http://yourdomain.com/users/")!))

参数字典

SwiftRoutes 从以下数据提供参数作为字典。

  • 部分 URL(开发者可以使用前缀 : 指定名称)
  • 查询字符串
SwiftRoutes.addRoute(URL(string: "http://yourdomain.com/users/:userid")!) { (params) -> Bool in
	let viewController = SomeViewController()
	let userId = params["userid"]   <- userId is "1234"
	let name = params["name"]   <- name is "testname"
	viewController.userid = userId
	navigationController.pushViewController(viewController, animated: true)
    return true
}

SwiftRoutes.routeUrl(URL(string: "http://yourdomain.com/users/1234?name=testname")!))

实际示例 - 使用 SwiftRoutes处理 UIApplicationShortcutItem

此示例展示了如何使用 SwiftRoutes 执行 UIApplicationShortcutItem

1. 在 info.plist 中定义 UIApplicationShortcutItem

此处定义了两个 UIApplicationShortcutItems。ShortcutItemType 有要处理的眼标。

	...
	<key>UIApplicationShortcutItems</key>
	<array>
		<dict>
			<key>UIApplicationShortcutItemIconFile</key>
			<string>Home</string>
			<key>UIApplicationShortcutItemTitle</key>
			<string>Home</string>
			<key>UIApplicationShortcutItemType</key>
			<string>/home</string>
			<key>UIApplicationShortcutItemUserInfo</key>
			<dict>
				<key>key1</key>
				<string>value1</string>
			</dict>
		</dict>
		<dict>
			<key>UIApplicationShortcutItemIconFile</key>
			<string>Setting</string>
			<key>UIApplicationShortcutItemTitle</key>
			<string>Setting</string>
			<key>UIApplicationShortcutItemType</key>
			<string>/setting</string>
			<key>UIApplicationShortcutItemUserInfo</key>
			<dict>
				<key>key1</key>
				<string>value1</string>
			</dict>
		</dict>
	</array>
	...

2. 定义路由处理程序

在应用启动时定义路由和处理程序。

class AppDelegate: UIResponder, UIApplicationDelegate {
    func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {

    	// Define routing
 		SwiftRoutes.addRoute(URL(string: "/home")!) { (params) -> Bool in
            self.window.rootViewController.moveToHome()  // pseudo code
            return true
        }

        SwiftRoutes.addRoute(URL(string: "/setting")!) { (params) -> Bool in
            self.window.rootViewController.moveSetting() // pseudo code
            return true
        }
    }
}

只需将 SwiftRoutes.routeUrl(_) 放到 application(application:performActionForShortcutItem:completionHandler) 方法的调用中,并将 SwiftRoutes.routeUrl(_) 返回结果传递给 completionHandler(_)

@available(iOS 9.0, *)
func application(application: UIApplication, performActionForShortcutItem shortcutItem: UIApplicationShortcutItem, completionHandler: (Bool) -> Void) {
        let val = SwiftRoutes.routeUrl(URL(string: shortcutItem.type)!)
        completionHandler(val)
}

takecian

SwiftRoutes 可以在 MIT 许可下使用。查看 LICENSE 文件以获取更多信息。