Sfoglia il codice sorgente

首界面添加缓存

jsonwang 3 anni fa
parent
commit
824e596471

+ 29 - 14
MusicVideoPlus/Classes/Modules/Home/Controllers/MVHomeController.swift

@@ -128,25 +128,34 @@ class MVHomeController: MVBaseController {
             BFLog(message: "已经请求过数据")
             return
         }
+      
+        
         MVHomeViewModel.getHomeHotVideos { [weak self] hotVideos, _ in
             BFLog(message: "hotVideos count is :\(hotVideos.count)")
-
-            self?.mVideos = hotVideos
-
-            self?.categoryCollectionView.reloadData()
-            if (self?.mVideos.count ?? 0) > 0 {
-                self?.mVideos[0].isSelected = true
-                for hotModel in self!.mVideos {
-                    for video in hotModel.videos {
-                        self?.mAllVideos.append(video)
-                    }
+            let cacheData = MVHotVideoModel.getCacheData()
+            if(cacheData.count == 0){
+                self?.refreshData(hotVideos: hotVideos)
+            }
+ 
+        }
+    }
+    
+    func refreshData( hotVideos:Array<MVHotVideoModel>) {
+         
+        mVideos = hotVideos
+        categoryCollectionView.reloadData()
+        if (mVideos.count ?? 0) > 0 {
+            mVideos[0].isSelected = true
+            for hotModel in mVideos {
+                for video in hotModel.videos {
+                    mAllVideos.append(video)
                 }
-                BFLog(message: " self?.mAllVideos count is \(String(describing: self?.mAllVideos.count))")
             }
-            self?.viewListView.reloadData()
-            // 自动播放第一个视频 确保 reloaddata 完成
-            self?.playVideo(page: 0)
+            BFLog(message: " self?.mAllVideos count is \(String(describing: mAllVideos.count))")
         }
+        viewListView.reloadData()
+        // 自动播放第一个视频 确保 reloaddata 完成
+        playVideo(page: 0)
     }
 
     override func viewDidLoad() {
@@ -179,6 +188,12 @@ class MVHomeController: MVBaseController {
                 cShowHUB(superView: nil, msg: "没有网络连接")
             }
         }
+        
+        let cacheData = MVHotVideoModel.getCacheData()
+        if(cacheData.count > 0){
+            BFLog(message: "有缓存数据 ")
+            refreshData(hotVideos: cacheData)
+        }
 
         // 播放器进度和状态回调
         PQSingletoVideoPlayer.shared.progressBloc = { [weak self] _, playProgress, duration in

+ 35 - 0
MusicVideoPlus/Classes/Modules/Home/Models/MVHotVideoModel.swift

@@ -7,6 +7,7 @@
 
 import Foundation
 import BFFramework
+let kSaveHotVideoData = "kSaveHotVideoData"
 class MVHotVideoModel: NSObject {
     
     //分类 ID
@@ -20,4 +21,38 @@ class MVHotVideoModel: NSObject {
     // 是否被选中
     var isSelected: Bool = false
     
+    
+    class func getCacheData() -> Array<MVHotVideoModel> {
+        
+        var hotVideos:Array = Array<MVHotVideoModel>.init()
+        let svaeData =  getUserDefaults(key: kSaveHotVideoData)
+        if(svaeData != nil){
+            let saveArray = jsonStringToArray(jsonString:svaeData as! String)  as! [[String: Any]]
+            for item in saveArray {
+                
+                let hotVideoModel:MVHotVideoModel = MVHotVideoModel.init()
+                hotVideoModel.categoryId = item["categoryId"] as? Int ?? 0
+                hotVideoModel.categoryName = item["categoryName"]  as? String ?? ""
+                hotVideoModel.categoryEmoji = item["categoryEmoji"] as? String ?? ""
+                let videos = item["videos"] as! [[String: Any]]
+                for video in videos {
+                    let tempModel = PQVideoListModel(jsonDict: video)
+                    tempModel.categoryName = hotVideoModel.categoryName
+                    tempModel.categoryImage = hotVideoModel.categoryEmoji
+                    hotVideoModel.videos.append(tempModel)
+                }
+                hotVideos.append(hotVideoModel)
+            }
+        }
+    
+        return hotVideos
+    }
+    
+   class  func saveCacheData(data:Array<Any>) {
+        
+        saveUserDefaults(key: kSaveHotVideoData, value: arrayToJsonString(data))
+    
+        
+       
+    }
 }

+ 3 - 0
MusicVideoPlus/Classes/Modules/Home/ViewModels/MVHomeViewModel.swift

@@ -38,6 +38,9 @@ class MVHomeViewModel: NSObject {
                 var hotVideos:Array = Array<MVHotVideoModel>.init()
                 if !(response is NSNull), response != nil {
                     let tempArr = response as! [[String: Any]]
+
+                    MVHotVideoModel.saveCacheData(data: tempArr)
+               
                     for item in tempArr {
                         
                         let hotVideoModel:MVHotVideoModel = MVHotVideoModel.init()