66 lines
2.2 KiB
Swift
66 lines
2.2 KiB
Swift
//
|
||
// MPPositive_GridLoadViewModel.swift
|
||
// relax.offline.mp3.music
|
||
//
|
||
// Created by Mr.Zhou on 2024/7/12.
|
||
//
|
||
|
||
import UIKit
|
||
|
||
class MPPositive_GridLoadViewModel: NSObject {
|
||
static let shared = MPPositive_GridLoadViewModel()
|
||
var grideViewModels:[MPPositive_GridViewModel] = []
|
||
|
||
private override init() {
|
||
super.init()
|
||
if let data = chachedData() {
|
||
grideViewModels = data
|
||
}
|
||
}
|
||
//更新grideModel
|
||
func reloadGrides() {
|
||
MP_NetWorkManager.shared.requestGenres { [weak self] array in
|
||
guard let self = self else {return}
|
||
DispatchQueue.main.async {
|
||
self.grideViewModels = array
|
||
self.cacheResponseData(self.grideViewModels)
|
||
//发布通知
|
||
NotificationCenter.notificationKey.post(notificationName: .search_gride_reload)
|
||
}
|
||
}
|
||
}
|
||
//存入默认数据
|
||
private func cacheResponseData(_ array: [MPPositive_GridViewModel]) {
|
||
guard grideViewModels.count != 0 else {
|
||
print("Search Gride数据未加载,无法缓存")
|
||
return
|
||
}
|
||
//将数据转为jsonData
|
||
do{
|
||
let jsonData = try JSONEncoder().encode(array)
|
||
//使用UserDefaults存入缓存数据
|
||
UserDefaults.standard.set(jsonData, forKey: "SearchGride")
|
||
print("已经将Search Gride数据缓存")
|
||
}catch{
|
||
//转为jsonData失败
|
||
print("Search Gride数据转为Data失败,失败原因\(error)")
|
||
}
|
||
}
|
||
//获取默认数据
|
||
private func chachedData() -> [MPPositive_GridViewModel]? {
|
||
guard let cacheData = UserDefaults.standard.data(forKey: "SearchGride") else {
|
||
print("获取Search Gride缓存数据失败")
|
||
return nil
|
||
}
|
||
do {
|
||
let array:[MPPositive_GridViewModel] = try JSONDecoder().decode([MPPositive_GridViewModel].self, from: cacheData)
|
||
print("已经将Search Gride缓存数据取出")
|
||
return array
|
||
} catch {
|
||
//转为jsonData失败
|
||
print("获取Search Gride缓存数据失败,失败原因\(error)")
|
||
return nil
|
||
}
|
||
}
|
||
}
|