完整Swift項目(模擬微博)演練、三

我將整個項目的復習拆分成了幾個部分, 每完成一部分我都會提交一次代碼, 大家根據(jù)所復習到的部分, 檢出對應(yīng)的分支來看代碼就可以了, 代碼中的注釋已經(jīng)十分詳盡了, 有問題或者疑惑大家可以隨時留言溝通.
項目地址

知識點匯總

  1. Alamofire 的基本用法
  2. Swift-WKWebView
  3. Swift-歸檔解檔存儲自定義類型數(shù)據(jù)
  4. Swift中 """ XXX """, 3個雙引號的作用
  5. Swift中 屬性類型的區(qū)別
  6. 獲取類型的class
  7. 阻尼動畫api
  8. Kingfisher 的超簡單使用方法
  9. 其他、下載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運行時的注意事項
  1. 本次代碼提交, 完成了未登錄、登錄、保存用戶數(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()
*/
  1. 首次使用VIewModel, 幫助控制器進行網(wǎng)絡(luò)請求, 只返回給控制成功與否的結(jié)果
    當請求是嵌套在一起的時候, 上一個請求的閉包參數(shù)需要繼續(xù)向下傳遞, 直到最后一個請求成了才算返回true.
  1. 封裝網(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

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市叉瘩,隨后出現(xiàn)的幾起案子膳帕,更是在濱河造成了極大的恐慌,老刑警劉巖薇缅,帶你破解...
    沈念sama閱讀 211,265評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件备闲,死亡現(xiàn)場離奇詭異,居然都是意外死亡捅暴,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,078評論 2 385
  • 文/潘曉璐 我一進店門咧纠,熙熙樓的掌柜王于貴愁眉苦臉地迎上來蓬痒,“玉大人,你說我怎么就攤上這事漆羔∥嗌荩” “怎么了?”我有些...
    開封第一講書人閱讀 156,852評論 0 347
  • 文/不壞的土叔 我叫張陵演痒,是天一觀的道長亲轨。 經(jīng)常有香客問我,道長鸟顺,這世上最難降的妖魔是什么惦蚊? 我笑而不...
    開封第一講書人閱讀 56,408評論 1 283
  • 正文 為了忘掉前任器虾,我火速辦了婚禮,結(jié)果婚禮上蹦锋,老公的妹妹穿的比我還像新娘兆沙。我一直安慰自己,他們只是感情好莉掂,可當我...
    茶點故事閱讀 65,445評論 5 384
  • 文/花漫 我一把揭開白布葛圃。 她就那樣靜靜地躺著,像睡著了一般憎妙。 火紅的嫁衣襯著肌膚如雪库正。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,772評論 1 290
  • 那天厘唾,我揣著相機與錄音褥符,去河邊找鬼。 笑死阅嘶,一個胖子當著我的面吹牛属瓣,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播讯柔,決...
    沈念sama閱讀 38,921評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼抡蛙,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了魂迄?” 一聲冷哼從身側(cè)響起粗截,我...
    開封第一講書人閱讀 37,688評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎捣炬,沒想到半個月后熊昌,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,130評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡湿酸,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,467評論 2 325
  • 正文 我和宋清朗相戀三年婿屹,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片推溃。...
    茶點故事閱讀 38,617評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡昂利,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出铁坎,到底是詐尸還是另有隱情蜂奸,我是刑警寧澤,帶...
    沈念sama閱讀 34,276評論 4 329
  • 正文 年R本政府宣布硬萍,位于F島的核電站扩所,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏朴乖。R本人自食惡果不足惜祖屏,卻給世界環(huán)境...
    茶點故事閱讀 39,882評論 3 312
  • 文/蒙蒙 一助赞、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧赐劣,春花似錦嫉拐、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,740評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至咐汞,卻和暖如春盖呼,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背化撕。 一陣腳步聲響...
    開封第一講書人閱讀 31,967評論 1 265
  • 我被黑心中介騙來泰國打工末患, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留乙帮,地道東北人碎节。 一個月前我還...
    沈念sama閱讀 46,315評論 2 360
  • 正文 我出身青樓勤家,卻偏偏與公主長得像,于是被迫代替她去往敵國和親掠手。 傳聞我的和親對象是個殘疾皇子憾朴,可洞房花燭夜當晚...
    茶點故事閱讀 43,486評論 2 348

推薦閱讀更多精彩內(nèi)容