65 lines
1.7 KiB
Swift
65 lines
1.7 KiB
Swift
//
|
||
// Prankmodel.swift
|
||
// Funny_sounds
|
||
//
|
||
// Created by 忆海16 on 2024/8/15.
|
||
//
|
||
|
||
import Foundation
|
||
|
||
|
||
// 音频文件的模型
|
||
class AudioFile:NSObject, Codable {
|
||
let title: String
|
||
let mp3Url: String
|
||
let preUrl: String
|
||
// 自定义初始化方法
|
||
init(title: String, mp3Url: String, preUrl: String) {
|
||
self.title = title
|
||
self.mp3Url = mp3Url
|
||
self.preUrl = preUrl
|
||
}
|
||
|
||
// 必须实现这些方法,以避免与Codable冲突
|
||
required init(from decoder: Decoder) throws {
|
||
let container = try decoder.container(keyedBy: CodingKeys.self)
|
||
self.title = try container.decode(String.self, forKey: .title)
|
||
self.mp3Url = try container.decode(String.self, forKey: .mp3Url)
|
||
self.preUrl = try container.decode(String.self, forKey: .preUrl)
|
||
}
|
||
|
||
func encode(to encoder: Encoder) throws {
|
||
var container = encoder.container(keyedBy: CodingKeys.self)
|
||
try container.encode(title, forKey: .title)
|
||
try container.encode(mp3Url, forKey: .mp3Url)
|
||
try container.encode(preUrl, forKey: .preUrl)
|
||
}
|
||
|
||
private enum CodingKeys: String, CodingKey {
|
||
case title
|
||
case mp3Url
|
||
case preUrl
|
||
}
|
||
}
|
||
|
||
// 分类模型
|
||
class SoundCategory:NSObject,Codable {
|
||
let categoryId: String
|
||
let categoryName: String
|
||
let categoryUrl: String
|
||
let list: [AudioFile]
|
||
}
|
||
|
||
|
||
func parseJSONData(jsonData: Data) -> [SoundCategory]? {
|
||
let decoder = JSONDecoder()
|
||
do {
|
||
// 解析数据
|
||
let soundCategories = try decoder.decode([SoundCategory].self, from: jsonData)
|
||
return soundCategories
|
||
} catch {
|
||
print("解析JSON数据时出错: \(error)")
|
||
return nil
|
||
}
|
||
}
|