93 lines
2.7 KiB
Swift
93 lines
2.7 KiB
Swift
//
|
||
// WP_4KModel.swift
|
||
// wallpaper_project
|
||
|
||
|
||
import UIKit
|
||
@objcMembers
|
||
|
||
class WP_4KModel: NSObject,Decodable,Encodable {
|
||
|
||
var title:String?
|
||
var thumbnail:String?
|
||
var preview:String?
|
||
var is_free:Int?
|
||
var category:Int?
|
||
var id:Int?
|
||
var cnt_like:Int?
|
||
|
||
enum CodingKeys: String, CodingKey {
|
||
case title
|
||
case thumbnail
|
||
case preview
|
||
case is_free
|
||
case category
|
||
case id
|
||
case cnt_like
|
||
}
|
||
|
||
// 实现 Decodable 协议中的初始化方法
|
||
required override init() {
|
||
super.init()
|
||
}
|
||
|
||
// 实现 Encodable 协议中的编码方法
|
||
func encode(to encoder: Encoder) throws {
|
||
var container = encoder.container(keyedBy: CodingKeys.self)
|
||
try container.encode(title, forKey: .title)
|
||
try container.encode(thumbnail, forKey: .thumbnail)
|
||
try container.encode(preview, forKey: .preview)
|
||
try container.encode(is_free, forKey: .is_free)
|
||
try container.encode(category, forKey: .category)
|
||
try container.encode(id, forKey: .id)
|
||
try container.encode(cnt_like, forKey: .cnt_like)
|
||
}
|
||
|
||
}
|
||
|
||
class WP_PhotoAlbum: NSObject,Codable {
|
||
var img:String?
|
||
|
||
init(img: String?) {
|
||
self.img = img
|
||
}
|
||
}
|
||
// 偏好设置管理器
|
||
class PreferencesManager {
|
||
static let shared = PreferencesManager()
|
||
let defaults = UserDefaults.standard
|
||
|
||
// 保存模型对象数组
|
||
func saveRakModels(_ models: [WP_PhotoAlbum]) {
|
||
do {
|
||
let encoder = JSONEncoder()
|
||
let encodedData = try encoder.encode(models)
|
||
defaults.set(encodedData, forKey: "rakModels")
|
||
} catch {
|
||
print("Error encoding rakModels: \(error)")
|
||
}
|
||
}
|
||
|
||
// 添加新的模型对象
|
||
func addRakModel(_ model: WP_PhotoAlbum) {
|
||
var existingModels = retrieveRakModels() ?? [] // 检索之前保存的数据,如果没有数据则使用空数组
|
||
existingModels.append(model) // 将新的数据模型添加到数组中
|
||
saveRakModels(existingModels) // 保存数组到偏好设置中
|
||
}
|
||
|
||
// 检索模型对象数组
|
||
func retrieveRakModels() -> [WP_PhotoAlbum]? {
|
||
if let savedData = defaults.data(forKey: "rakModels") {
|
||
do {
|
||
let decoder = JSONDecoder()
|
||
let loadedModels = try decoder.decode([WP_PhotoAlbum].self, from: savedData)
|
||
return loadedModels
|
||
} catch {
|
||
print("Error decoding rakModels: \(error)")
|
||
return nil
|
||
}
|
||
}
|
||
return nil
|
||
}
|
||
}
|