Router
@objc(ObjCRouter)
public class Router : NSObject, @unchecked Sendable
URL路由器
由于Function也是闭包,Handler参数支持静态方法,示例:AppRouter.routePlugin(_:) MGJRouter FFRouter
-
URL路由上下文
See moreDeclaration
Swift
public class Context : NSObject, @unchecked Sendable
-
路由处理句柄,仅支持openURL时可返回nil
Declaration
Swift
public typealias Handler = @MainActor @Sendable (Context) -> Any?
-
路由完成回调句柄
Declaration
Swift
public typealias Completion = @MainActor @Sendable (Any?) -> Void
-
路由参数类,可直接使用,也可完全自定义
See moreDeclaration
Swift
open class Parameter : ObjectParameter, @unchecked Sendable
-
路由类加载器,访问未注册路由时会尝试调用并注册,block返回值为register方法class参数
Declaration
Swift
public static let sharedLoader: Loader<String, Any>
-
是否开启严格模式,开启后不会以上一层为fallback,默认false
Declaration
Swift
public static var strictMode: Bool { get set }
-
注册路由类或对象,批量注册路由规则
Declaration
Swift
@discardableResult public class func registerClass(_ clazz: Any, mapper: (([String]) -> [String : String])? = nil) -> Bool
Parameters
clazz
路由类或对象,不遍历父类
mapper
自定义映射,默认nil时查找规则:xxxUrl => xxxRouter: > xxxDefaultRouter:
Return Value
是否注册成功
-
预置路由类或对象,批量注册路由规则,仅当路由未被注册时生效
Declaration
Swift
@discardableResult public class func presetClass(_ clazz: Any, mapper: (([String]) -> [String : String])? = nil) -> Bool
Parameters
clazz
路由类或对象,不遍历父类
mapper
自定义映射,默认nil时查找规则:xxxUrl => xxxRouter: > xxxDefaultRouter:
Return Value
是否注册成功
-
取消注册某个路由类或对象
Declaration
Swift
public class func unregisterClass(_ clazz: Any, mapper: (([String]) -> [String : String])? = nil)
Parameters
clazz
路由类或对象,不遍历父类
mapper
自定义映射,默认nil时查找规则:xxxUrl => xxxRouter: > xxxDefaultRouter:
-
注册 pattern 对应的 Handler,可返回一个 object 给调用方,也可直接触发事件返回nil
Declaration
Swift
@discardableResult public class func registerURL(_ pattern: StringParameter, handler: @escaping Handler) -> Bool
Parameters
pattern
字符串,带上 scheme,如 app://beauty/:id
handler
路由处理句柄,参数为路由上下文对象
Return Value
是否注册成功
-
注册 patterns 对应的 Handler,可返回一个 object 给调用方,也可直接触发事件返回nil
Declaration
Swift
@discardableResult public class func registerURL(_ patterns: [StringParameter], handler: @escaping Handler) -> Bool
Parameters
patterns
字符串数组,带上 scheme,如 app://beauty/:id
handler
路由处理句柄,参数为路由上下文对象
Return Value
是否注册成功
-
预置 pattern 对应的 Handler,可返回一个 object 给调用方,也可直接触发事件返回nil,仅当路由未被注册时生效
Declaration
Swift
public class func presetURL(_ pattern: StringParameter, handler: @escaping Handler) -> Bool
Parameters
pattern
字符串,带上 scheme,如 app://beauty/:id
handler
路由处理句柄,参数为路由上下文对象
Return Value
是否注册成功
-
预置 patterns 对应的 Handler,可返回一个 object 给调用方,也可直接触发事件返回nil,仅当路由未被注册时生效
Declaration
Swift
public class func presetURL(_ patterns: [StringParameter], handler: @escaping Handler) -> Bool
Parameters
patterns
字符串数组,带上 scheme,如 app://beauty/:id
handler
路由处理句柄,参数为路由上下文对象
Return Value
是否注册成功
-
取消注册某个 pattern
Declaration
Swift
public class func unregisterURL(_ pattern: StringParameter)
Parameters
pattern
字符串或字符串数组
-
批量取消注册 patterns
Declaration
Swift
public class func unregisterURL(_ patterns: [StringParameter])
Parameters
patterns
字符串数组
-
取消注册所有 pattern
Declaration
Swift
public class func unregisterAllURLs()
-
设置全局路由过滤器,URL 被访问时优先触发。如果返回true,继续解析pattern,否则停止解析
Declaration
Swift
public static var routeFilter: (@MainActor @Sendable (Context) -> Bool)? { get set }
-
设置全局路由处理器,URL 被访问且有返回值时触发,可用于打开VC、附加设置等
Declaration
Swift
public static var routeHandler: (@MainActor @Sendable (Context, Any) -> Any?)? { get set }
-
设置全局错误句柄,URL 未注册时触发,可用于错误提示、更新提示等
Declaration
Swift
public static var errorHandler: (@MainActor @Sendable (Context) -> Void)? { get set }
-
预置全局默认路由处理器,仅当未设置routeHandler时生效,值为nil时默认打开VC
Declaration
Swift
public class func presetRouteHandler(_ handler: (@MainActor @Sendable (Context, Any) -> Any?)? = nil)
Parameters
handler
路由处理器
-
是否可以打开URL,不含object
Declaration
Swift
public class func canOpenURL(_ url: StringParameter?) -> Bool
Parameters
url
URL 带 Scheme,如 app://beauty/3
Return Value
是否可以打开
-
打开此 URL,带上附加信息,同时当操作完成时,执行额外的代码
Declaration
Swift
@MainActor public class func openURL(_ url: StringParameter?, userInfo: [AnyHashable : Any]? = nil, completion: Completion? = nil)
Parameters
url
带 Scheme 的 URL,如 app://beauty/4
userInfo
附加信息
completion
URL 处理完成后的 callback,完成的判定跟具体的业务相关
-
快速调用Handler参数中的回调句柄,指定回调结果
Declaration
Swift
@MainActor public class func completeURL(_ context: Context, result: Any?)
Parameters
context
Handler中的模型参数
result
URL处理完成后的回调结果
-
查找谁对某个 URL 感兴趣,如果有的话,返回一个 object;如果没有,返回nil
Declaration
Swift
@MainActor public class func object(forURL url: StringParameter?, userInfo: [AnyHashable : Any]? = nil) -> Any?
Parameters
url
URL 带 Scheme,如 app://beauty/3
userInfo
附加信息
Return Value
URL返回的对象
-
调用此方法来拼接 pattern 和 parameters
Router.generateURL(“beauty/:id”, parameters: 13) Router.generateURL(“beauty/:id”, parameters: [“id”: 13])
Declaration
Swift
public class func generateURL(_ pattern: String, parameters: Any?) -> String
Parameters
pattern
url pattern 比如 @“beauty/:id”
parameters
一个数组(数量和变量一致)或一个字典(key为变量名称)或单个值(替换所有参数)
Return Value
返回生成的URL String
-
全局重写过滤器
Declaration
Swift
public static var rewriteFilter: (@Sendable (String) -> String)? { get set }
-
根据重写规则,重写URL
Declaration
Swift
public class func rewriteURL(_ url: StringParameter?) -> String
Parameters
url
需要重写的url
Return Value
重写之后的url
-
添加重写规则
Declaration
Swift
public class func addRewriteRule(_ matchRule: String, targetRule: String)
Parameters
matchRule
匹配规则
targetRule
目标规则
-
批量添加重写规则
Declaration
Swift
public class func addRewriteRules(_ rules: [String : String])
Parameters
rules
规则字典
-
移除重写规则
Declaration
Swift
public class func removeRewriteRule(_ matchRule: String)
Parameters
matchRule
匹配规则
-
移除所有的重写规则
Declaration
Swift
public class func removeAllRewriteRules()