URLNavigator 使用及思考

起头

最近听说swift要开始稳定API了,后期应该没啥大变化了。总算可以放心使用了,从swift2.0开始写过一个项目后,有点后怕了。因为swift编译慢,特别慢;每次打包包还特别大,MacMini整的嗷嗷叫;写代码的时候莫名其妙的报错,然后编译两遍又过了。加上公司项目比较急。最后还是用Object-C来完成项目。

一直在关注,却一直未去尝试,就像暗恋一个姑娘,明明很喜欢,但她的小脾气,让我望而却步;
看到swift3.0与4.1变化不大,总算放心开始使用swift写项目了。
swift有啥合适的router控件呢?经过一个小时的查找,找到了devxoul/URLNavigator
这个第三方,一看小伙子,你还是很6呀1.6k+的赞,不用你用谁?
然后就延伸到下面的问题;

为啥要用URLNavigator ?

  • 组件化,解耦;
    目前由于重写一个长期为维护的项目,决定使用swift使用组件化优化项目。目前相对来说使用URLNavigator是降低耦合性最方便的。所以目前就先用他了。

如何使用

使用步骤;
  1. 第一步
1. 在项目的PodFile文件中添加 pod 'URLNavigator'
2. pod install

项目中就导入了我们的URLNavigator;

  1. 第二步;
    创建NavigationMap文件
    在项目中导入模块文件
import UIKit
import URLNavigator
  1. 第三步 修改文件;
enum NavigationMap {

}
  1. 将视图控制器注册到URL模式
  • 这是第一种用法
  • <username>类似于泛型,也就是你要传的值;
    navigator.register("navigator://user/<username>") { url, values, context in
      guard let username = values["username"] as? String else { return nil }
      return UserViewController(navigator: navigator, username: username)
    }

跳转

self.navigator.push("navigator://mine/6666")
//或者
self.navigator.present("navigator://mine/6666");
  • 讲解过程

局限,如何扩展;

  1. 目前最大的局限可能是只能传单字符;
  2. 传对象也不行;
  3. 字典的话,其实也很方便传过去;但是感觉这种URL的方式不是特别好;作者也没具体的工具,需要自己扩展;
  4. pop的方法也没有

下面为大家讲解,并扩展一些方法,让大家使用更方便;

  • 对象转json/json转对象
  • diction转json/json转diction
  • 怎么设计?协议,或者获取传来的类型,自动转;
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 爱上你的时候我还不懂爱情 直到分开很久以后我才明白 原来爱一个人是这么美好的一件事情 那时未来的计划里总是有你 忘...
    伤城秘密阅读 1,625评论 0 0
  • 桂花,是我最喜欢的花之一,因为它优雅又不张扬,香气怡人却又默默无闻。每当秋日,我总带着玻璃罐子,来到离我这...
    phantomses阅读 1,904评论 0 0
  • 生姜这样吃,一块姜能顶十副药,可惜知道的人太少,男人更要看看 【健康舞台体验中】 姜是助阳之品,自古以来素有“男子...
    健康舞台阅读 1,423评论 0 0