// // 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 [] } }