【发布时间】:2021-01-01 20:18:33
【问题描述】:
我想用 json 文件加载我的数据。到现在为止还挺好。但现在我很挣扎。如果用户对油对象进行了一些更改并想要保存它们怎么办?我的想法是,我将更改后的油对象保存到 CoreData。但这有什么可能?因为每次用户启动应用程序时,都会加载未修改的 json 文件,并且用户不会看到他更改的对象。我该如何处理?还是我的想法不对?
struct Oil: Codable, Hashable, Identifiable {
var id: Int
let image: String
let color: String
let title: String
let subtitle: String
let description: String
var localizedTitle: LocalizedStringKey {
return LocalizedStringKey(title)
}
var localizedDescription: LocalizedStringKey {
return LocalizedStringKey(description)
}
var isFavorite: Bool
static let exampleOil = Oil(id: 10001, image: "",color: "lavenderColor" ,title: "lavender", subtitle: "Lavandula angustifolia", description: "", isFavorite: false)
}
final class Oils: ObservableObject {
var oils: [Oil] = load("oilDatabase.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)")
}
}
【问题讨论】:
标签: json swift core-data swiftui