76 lines
2.3 KiB
Swift
76 lines
2.3 KiB
Swift
//
|
||
// CollectDefaults.swift
|
||
// Funny_sounds
|
||
//
|
||
// Created by 忆海16 on 2024/8/19.
|
||
//
|
||
|
||
import Foundation
|
||
class collectManager {
|
||
static let shared = collectManager() // 单例模式
|
||
|
||
private let favoritesKey = "favoriteAudioFiles" // UserDefaults的key
|
||
|
||
private init() {} // 私有化构造方法
|
||
|
||
// 切换收藏状态
|
||
func toggleFavorite(audioFile: AudioFile) {
|
||
var favorites = loadFavorites()
|
||
|
||
if let index = favorites.firstIndex(where: { $0.title == audioFile.title }) {
|
||
// 如果音频文件已经被收藏,则取消收藏
|
||
favorites.remove(at: index)
|
||
print("音频文件已从收藏中移除")
|
||
} else {
|
||
// 如果音频文件未被收藏,则添加到收藏
|
||
favorites.append(audioFile)
|
||
print("音频文件已添加到收藏")
|
||
}
|
||
|
||
// 更新收藏列表到UserDefaults
|
||
saveFavorites(favorites)
|
||
}
|
||
|
||
// 检查音频文件是否已收藏
|
||
func isFavorite(audioFile: AudioFile) -> Bool {
|
||
let favorites = loadFavorites()
|
||
return favorites.contains(where: { $0.title == audioFile.title })
|
||
}
|
||
|
||
// 获取所有收藏的音频文件
|
||
func getAllFavorites() -> [AudioFile] {
|
||
return loadFavorites()
|
||
}
|
||
|
||
// 清空所有收藏的音频文件
|
||
func clearFavorites() {
|
||
saveFavorites([])
|
||
print("所有收藏已清空")
|
||
}
|
||
|
||
// 私有方法:保存收藏列表
|
||
private func saveFavorites(_ audioFiles: [AudioFile]) {
|
||
let encoder = JSONEncoder()
|
||
do {
|
||
let data = try encoder.encode(audioFiles)
|
||
UserDefaults.standard.set(data, forKey: favoritesKey)
|
||
} catch {
|
||
print("保存AudioFile数据时出错: \(error)")
|
||
}
|
||
}
|
||
|
||
// 私有方法:加载收藏列表
|
||
private func loadFavorites() -> [AudioFile] {
|
||
if let data = UserDefaults.standard.data(forKey: favoritesKey) {
|
||
let decoder = JSONDecoder()
|
||
do {
|
||
let audioFiles = try decoder.decode([AudioFile].self, from: data)
|
||
return audioFiles
|
||
} catch {
|
||
print("读取AudioFile数据时出错: \(error)")
|
||
}
|
||
}
|
||
return []
|
||
}
|
||
}
|