运行老项目
The targets “NewsTests” and “NewsUITests” contains source code developed with Swift 3.x. This version of Xcode does not support building or migrating Swift 3.x targets.
Use Xcode 10.1 to migrate the code to Swift 4.
目前版本
Swift Compiler - Language
选择一个高版本吧
pod 保持最新哦
错误过多
命名过旧
UIApplicationLaunchOptionsKey
=>UIApplication.LaunchOptionsKey
childViewControllers => children
addChildViewController => addChild
calculateDiskCacheSize => calculateDiskStorageSize 切闭包返回的是一个枚举哦 size 是 Result<Success, Failure>
方法过旧
sectionInset = UIEdgeInsetsMake(0, 0, 0, 0)
修复
sectionInset = UIEdgeInsets(top: 0, left: 0, bottom: 0, right: 0)
与系统命名重复
Alamofire 的请求request 不存在
富文本
NSAttributedStringKey ->
MJ
if ((tableView.mj_footer?.isRefreshing) != nil)
if ((self!.tableView.mj_footer?.isRefreshing) != nil)
if tableView.mj_footer?.isRefreshing != nil
self!.collectionView.mj_footer?.isRefreshing != nil
网络 修改
Alamofire.request s
图片
ImageDownloader.default.downloadImage(with: URL(string: image.url)!, options: nil) { receivedSize, totalSize in
// 获取当前进度
let progress = Float(receivedSize) / Float(totalSize)
SVProgressHUD.showProgress(progress)
} completionHandler: { result in
switch result {
case let .success(imageResult):
// 调用系统相册,保存到相册
PHPhotoLibrary.shared().performChanges({
PHAssetChangeRequest.creationRequestForAsset(from: imageResult.image)
}, completionHandler: { (success, error) in
SVProgressHUD.dismiss()
if success { SVProgressHUD.showSuccess(withStatus: "保存成功!") }
})
break
default: break
}
}
搭建 项目
tabbar渲染蓝色问题
tabbaritem的 蓝色字体 tintColor
MyTabBarController 管理4个导航控制器
kvc 设置 tabBar
编写 MyTabBar 添加按钮 调整 4个tabbarbutton位置
我的个人中心
MineViewController
修改 MineViewController 为 UITableViewController
添加Const 宏文件
添加UIColor分类
UIColor+Extension Convenience 便利构造器 然后用一个 iOS10方法 displayP3Red 方法
创建Tool 网络请求
从协议出发
比如加载xib
struct 和 class 区别
NetworkTool
定义协议 、 扩展
添加Alamofire框架
SwiftJson是 json解析
HandyJSON json解析 json转模型
pod update --no-repo-update
不会解析依赖 直接下载
http 请求是添加AppTrnsport 你懂的
Model层结构体的变量可以声明可选 也可以给默认值
编写 MyOtherCell 、MyFirstSectionCell
竟然是xib 卧槽 我还是纯代码吧
as! as? 明天研究一波 是不是类型转换呢?
添加扩展 UIView+Extension、UITableView+Extension
写 RegisterCellOrNib 扩展
替换掉 记得cell要遵守协议
302-自定义我的关注cell 要加个借口
主题 SwiftTheme
appdelegate 初始化加载 创建MyTheme 控制
通知、user default
控制器销毁 deinit
tababr不会销毁的 但是还是移除吧
登陆界面
MoreLoginViewController
IBAnimate
登陆界面还是拖拽的 但是我还是用纯代码吧
添加RxSwift RxCocoa
添加 moreLoginButton
rxd的闭包中加weak 老师都说自己研究不深就那么写吧
登陆界面的 主题设置 感觉真浪费时间 我就简单听听吧
拖线 点击事件
设置界面 403 数据从plist文件获取
跳转 设置界面 在MineViewController
plist文件
- 新建SettingModel
- 加载plist文件 数组加载 as! 【any】
加载plist重点 强制转换类型 as运用 和 HandyJSON
重点来了 didSet 给cell 赋值
setting!.name 强制解包因为有底气 因为数据确实有 哈哈
fileprivate 修饰 setupUI
获取缓存
size 按字节算的 所以要处理一下 是个闭包 发通知 这块如果是数据绑定 估计就牛逼了
事件 @objc
设置字体大小
就是改个字 没做处理应该
flatmap
设置里面其实没啥知识点 就是获取plist 然后通知 知识点
自定义导航控制器 MyNavigationController 修改返回按钮
viewControllers.cout > 0 要不要tabbar
添加 lefttabbaritem