我在网上找到了在 json 文件中使用硬编码 uuid 的示例,并且这些示例非常适合我,但是当我在应用程序中添加从 json 数组中删除项目的功能时,我需要动态创建这些 uuid
这是我的json文件(list.json),它曾经有硬编码的id,如“id”:1并且有效(当我使用 int 作为 ids 时)
[
{
"name": "Dune",
"author": "Frank Herbert",
"page": "77"
},
{
"name": "Ready Player One",
"author": "Ernest Cline",
"page": "234"
},
{
"name": "Murder on the Orient Express",
"author": "Agatha Christie",
"page": "133"
}
]
这是我的结构(Book.swift)
struct Book: Hashable, Codable, Identifiable {
var id = UUID()
var name: String
var author: String
var page: String
}
当我使用此结构和代码(Data.swift)解码我的 json 文件时...
let bookData: [Book] = load("list.json")
func load<T: Decodable>(_ filename: String) -> T {
let data: Data
guard let file = Bundle.main.url(forResource: filename, withExtension: nil)
else {
fatalError("Couldn't find \(filename) in main bundle.")
}
do {
data = try Data(contentsOf: file)
} catch {
fatalError("Couldn't load \(filename) from main bundle:\n\(error)")
}
do {
let decoder = JSONDecoder()
return try decoder.decode(T.self, from: data)
} catch {
fatalError("Couldn't parse \(filename) as \(T.self):\n\(error)")
}
}
我的最后一个致命错误被执行,因为 id 键没有与之关联的值(因为我在 json 文件中删除了它)
如何使用 id 初始化我的 json 文件,以便我的id = UUID()
我的结构中的语句可以为其分配一个唯一的 id 吗?