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

87 lines
3.1 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.

//
// PreferenceManager.swift
// Funny_sounds
//
// Created by 16 on 2024/8/27.
//
import Foundation
import UIKit
class PreferenceManager {
static let shared = PreferenceManager()
private let preferencesKey = "userPreferences" //
private init() {}
// MARK: -
func savePreference(_ preference: UserPreference) {
var preferences = loadPreferences() ?? [UserPreference]()
preferences.append(preference) //
savePreferences(preferences) //
}
// MARK: -
private func savePreferences(_ preferences: [UserPreference]) {
if let encodedPreferences = try? JSONEncoder().encode(preferences) {
UserDefaults.standard.set(encodedPreferences, forKey: preferencesKey) // UserDefaults
}
}
// MARK: -
func loadPreferences() -> [UserPreference]? {
guard let savedData = UserDefaults.standard.data(forKey: preferencesKey),
let preferences = try? JSONDecoder().decode([UserPreference].self, from: savedData) else {
return nil // nil
}
return preferences //
}
// MARK: -
func clearPreferences() {
UserDefaults.standard.removeObject(forKey: preferencesKey) // UserDefaults
}
// MARK: -
func saveAudio(data: Data, fileName: String) -> Bool {
let fileURL = getDocumentsDirectory().appendingPathComponent(fileName)
do {
try data.write(to: fileURL) //
return true
} catch {
print("保存音频失败: \(error.localizedDescription)")
return false
}
}
// MARK: -
func saveImage(image: UIImage, fileName: String) -> Bool {
guard let data = image.pngData() else { return false }
let fileURL = getDocumentsDirectory().appendingPathComponent(fileName)
do {
try data.write(to: fileURL) //
return true
} catch {
print("保存图片失败: \(error.localizedDescription)")
return false
}
}
// MARK: -
func loadAudio(fileName: String) -> Data? {
let fileURL = getDocumentsDirectory().appendingPathComponent(fileName)
return try? Data(contentsOf: fileURL) //
}
// MARK: -
func loadImage(fileName: String) -> UIImage? {
let fileURL = getDocumentsDirectory().appendingPathComponent(fileName)
guard let data = try? Data(contentsOf: fileURL) else { return nil }
return UIImage(data: data) //
}
// MARK: -
private func getDocumentsDirectory() -> URL {
return FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first!
}
}