prank/Funny_sounds/Tool/CollectDefaults.swift
2024-09-03 09:38:34 +08:00

76 lines
2.3 KiB
Swift
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

//
// CollectDefaults.swift
// Funny_sounds
//
// Created by 16 on 2024/8/19.
//
import Foundation
class collectManager {
static let shared = collectManager() //
private let favoritesKey = "favoriteAudioFiles" // UserDefaultskey
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 []
}
}