Router

@objc(ObjCRouter)
public class Router : NSObject, @unchecked Sendable

URL路由器

由于Function也是闭包,Handler参数支持静态方法,示例:AppRouter.routePlugin(_:) MGJRouter FFRouter

Typealias

  • URL路由上下文

    See more

    Declaration

    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 more

    Declaration

    Swift

    open class Parameter : ObjectParameter, @unchecked Sendable

Accessor

  • 路由类加载器,访问未注册路由时会尝试调用并注册,block返回值为register方法class参数

    Declaration

    Swift

    public static let sharedLoader: Loader<String, Any>
  • 是否开启严格模式,开启后不会以上一层为fallback,默认false

    Declaration

    Swift

    public static var strictMode: Bool { get set }

Public

  • 注册路由类或对象,批量注册路由规则

    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

Router+Extension

  • 全局重写过滤器

    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()