起头
最近听说swift要开始稳定API了,后期应该没啥大变化了。总算可以放心使用了,从swift2.0开始写过一个项目后,有点后怕了。因为swift编译慢,特别慢;每次打包包还特别大,MacMini整的嗷嗷叫;写代码的时候莫名其妙的报错,然后编译两遍又过了。加上公司项目比较急。最后还是用Object-C来完成项目。
一直在关注,却一直未去尝试,就像暗恋一个姑娘,明明很喜欢,但她的小脾气,让我望而却步;
看到swift3.0与4.1变化不大,总算放心开始使用swift写项目了。
swift有啥合适的router控件呢?经过一个小时的查找,找到了devxoul/URLNavigator
这个第三方,一看小伙子,你还是很6呀1.6k+的赞,不用你用谁?
然后就延伸到下面的问题;
为啥要用URLNavigator ?
- 组件化,解耦;
目前由于重写一个长期为维护的项目,决定使用swift使用组件化优化项目。目前相对来说使用URLNavigator是降低耦合性最方便的。所以目前就先用他了。
如何使用
使用步骤;
- 第一步
1. 在项目的PodFile文件中添加 pod 'URLNavigator'
2. pod install
项目中就导入了我们的URLNavigator;
- 第二步;
创建NavigationMap文件
在项目中导入模块文件
import UIKit
import URLNavigator
- 第三步 修改文件;
enum NavigationMap {
}
- 将视图控制器注册到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");
- 讲解过程
局限,如何扩展;
- 目前最大的局限可能是只能传单字符;
- 传对象也不行;
- 字典的话,其实也很方便传过去;但是感觉这种URL的方式不是特别好;作者也没具体的工具,需要自己扩展;
- pop的方法也没有
下面为大家讲解,并扩展一些方法,让大家使用更方便;
- 对象转json/json转对象
- diction转json/json转diction
- 怎么设计?协议,或者获取传来的类型,自动转;