我將整個項目的復習拆分成了幾個部分, 每完成一部分我都會提交一次代碼, 大家根據(jù)所復習到的部分, 檢出對應(yīng)的分支來看代碼就可以了, 代碼中的注釋已經(jīng)十分詳盡了, 有問題或者疑惑大家可以隨時留言溝通.
項目地址
知識點匯總
- Alamofire 的基本用法
- Swift-WKWebView
- Swift-歸檔解檔存儲自定義類型數(shù)據(jù)
- Swift中 """ XXX """, 3個雙引號的作用
- Swift中 屬性類型的區(qū)別
- 獲取類型的class
- 阻尼動畫api
- Kingfisher 的超簡單使用方法
- 其他、下載demo運行時的注意事項
5. Swift中 屬性類型的區(qū)別
5.1 存儲型屬性: 用于存儲一個常量或者變量.說白了就是既能存又能取, 需要開辟內(nèi)存空間.
5.2 計算型屬性: 不直接存儲值, 而是通過get / set 來取值或者賦值. 說白了就是執(zhí)行函數(shù)時直接返回其他內(nèi)存地址; 自己不分配獨立空間保存計算結(jié)果, 每次執(zhí)行都會被調(diào)用.
6. 獲取類型的class
/**
- OC 中獲取類型的class
- 不是系統(tǒng)的類: [Person class]
- 是系統(tǒng)的類: NSClassFromString(<#NSString * _Nonnull aClassName#>)
- Swift 中獲取類型的class
- 不是系統(tǒng)的類: Person.self
- 是系統(tǒng)的類: NSClassFromString(<#T##aClassName: String##String#>)
*/
7. 阻尼動畫api
8. Kingfisher 的超簡單使用方法
為UIImageView 添加extension, 封裝Kingfisher
import UIKit
/**
- 目前kf(4.10.1) 提供兩種加載網(wǎng)絡(luò)圖片的pai
- kf.setImage(with: <#T##Resource?#>)
- kf.setImage(with: <#T##Resource?#>, placeholder: <#T##Placeholder?#>, options: <#T##KingfisherOptionsInfo?#>, progressBlock: <#T##DownloadProgressBlock?##DownloadProgressBlock?##(Int64, Int64) -> Void#>, completionHandler: <#T##CompletionHandler?##CompletionHandler?##(Image?, NSError?, CacheType, URL?) -> Void#>)
*/
extension UIImageView{
/// 獲取網(wǎng)絡(luò)圖片的方法, image傳網(wǎng)絡(luò)圖片的地址, placeholder傳圖片名稱
func set_Image(image: String?, placeholder: String? = nil) {
guard let img = image else {
print("圖片資源不存在")
return
}
let url = URL(string: img)
guard let u = url else {
print("圖像路徑轉(zhuǎn)url失敗")
return
}
if let p = placeholder {
kf.setImage(with: u, placeholder: UIImage(named: p), options: [], progressBlock: nil, completionHandler: nil)
return
}
kf.setImage(with: u)
}
}
9. 其他秕重、下載demo運行時的注意事項
- 本次代碼提交, 完成了未登錄、登錄、保存用戶數(shù)據(jù).
邏輯梳理如下:
/**
- 1. 程序啟動
- 如果沒有登錄, 顯示訪客視圖( HTabBarViewController + HVisitorView) -> rootVc = HTabBarViewController()
- 點擊登錄, 跳轉(zhuǎn)(modal) -> HOAuthViewController(也就是微博的授權(quán)webView 登錄頁面)
- 登陸成功, 發(fā)送通知, 跳轉(zhuǎn)至歡迎頁面, 切換rootVc = HWelcomeViewController()
- 歡迎頁面動畫做完, 發(fā)送通知 - 跳轉(zhuǎn)至主頁(HTabBarViewController - HVisitorView) ->切換 rootVc = HTabBarViewController()
- 已經(jīng)登錄了, 顯示歡迎頁面, rootVc = HWelcomeViewController()
- 歡迎頁面動畫做完, 發(fā)送通知 - 跳轉(zhuǎn)至主頁(HTabBarViewController - HVisitorView) ->切換 rootVc = HTabBarViewController()
*/
首次使用VIewModel, 幫助控制器進行網(wǎng)絡(luò)請求, 只返回給控制成功與否的結(jié)果
當請求是嵌套在一起的時候, 上一個請求的閉包參數(shù)需要繼續(xù)向下傳遞, 直到最后一個請求成了才算返回true.
- 封裝網(wǎng)絡(luò)工具類HNetworkTools(對Alamofire 的二次封裝), 便于后期管理和維護.
下載demo運行時的注意事項
需要去微博開放平臺建項罢猪、在demo 中HOAuthViewController 更換對應(yīng)的key.
注: 目前登錄可直接點擊自動填充來登錄, 但這個測試賬號隨時都有可能失效.最好自己注冊一下.
下面教你5分鐘都用不上就能注冊的流程和配置:
- OAuth授權(quán)
- open auth 開放的授權(quán)
- 使用微博OAuth授權(quán), 做的是自己的項目, 顯示的數(shù)據(jù)是新浪微博提供的數(shù)據(jù)
- 如何才可以獲取到新浪微博的數(shù)據(jù)
- 注冊一個新浪微博賬號
- 登錄http://www.open.weibo.com (新浪微博開發(fā)者中心)
- 成為開發(fā)者
- 個人版
- 企業(yè)版 -> 公司
- 在自己的app中使用新浪微博提供的數(shù)據(jù)
- 添加測試賬號(在當前app 沒有上架之前只有測試賬號才可以拿到新浪微博的數(shù)據(jù)) 上架以后 只要使用當前app的使用者均可以訪問新浪微博的數(shù)據(jù)
- 登錄開發(fā)者中心, 完善個人信息, 注冊一個應(yīng)用(微鏈接 -> 移動應(yīng)用 -> 立即接入 ->驗證成功后,重新打開, 新建應(yīng)用)
- 選擇應(yīng)用:
- 應(yīng)用信息 -> 基本信息 ->就會返回一些信息
- APPKEY
- APPSECRECT
- 為我們獲取code (授權(quán)碼) token(訪問令牌, 有實效性能)
- 高級信息 -> 手動去設(shè)置回調(diào)鏈接
- 測試信息 -> 輸入微博用戶 ->添加測試用戶(之后的登錄注冊, 獲取數(shù)據(jù)都是使用該測試賬號)
- 在我們的app中加載webView (微博授權(quán)登錄界面)
- 確認授權(quán)
- 獲取code
- 通過code 獲取 token
- 以后請求新浪微博數(shù)據(jù) 均是通過token 獲取到當前賬號的微博數(shù)據(jù)
*/
.End