更新 json 模型和 retaining/converting 现有数据 - Swift
Updating json model and retaining/converting existing data - Swift
我有一个看起来像这样的数据模型:
struct MacroLog : Codable {
var date: Date = Date()
var type: MacroType
var beforeValue: Int
var afterValue: Int
var description: String
var isOverwrite: Bool = false
func valueDifference() -> Int {
return afterValue - beforeValue
}
}
我需要通过添加时间戳 属性 来更新它:
struct MacroLog : Codable {
let timestamp: Date
var date: Date = Date()
var type: MacroType
var beforeValue: Int
var afterValue: Int
var description: String
var isOverwrite: Bool = false
func valueDifference() -> Int {
return afterValue - beforeValue
}
}
要保留现有的 MacroLog 实体或将其转换为新模型数据,我需要做什么?我知道它会保留下来,所以这基本上是我在问我如何正确管理在这些情况下进行任何类型的模型更改。
我通过以下方式更新新条目:
private func updateLogs(logs: [MacroLog]) {
var logsData = Data()
do {
let encoder = JSONEncoder()
logsData = try encoder.encode(logs)
_ = (logsData as NSData).write(to: fileUrl as URL, atomically: true)
} catch {
print("failed - \(error)")
}
}
关于将时间戳设为可选的评论中的答案解决了我的问题。这样,我以前的所有日志条目都会保留并继续加载。
我有一个看起来像这样的数据模型:
struct MacroLog : Codable {
var date: Date = Date()
var type: MacroType
var beforeValue: Int
var afterValue: Int
var description: String
var isOverwrite: Bool = false
func valueDifference() -> Int {
return afterValue - beforeValue
}
}
我需要通过添加时间戳 属性 来更新它:
struct MacroLog : Codable {
let timestamp: Date
var date: Date = Date()
var type: MacroType
var beforeValue: Int
var afterValue: Int
var description: String
var isOverwrite: Bool = false
func valueDifference() -> Int {
return afterValue - beforeValue
}
}
要保留现有的 MacroLog 实体或将其转换为新模型数据,我需要做什么?我知道它会保留下来,所以这基本上是我在问我如何正确管理在这些情况下进行任何类型的模型更改。
我通过以下方式更新新条目:
private func updateLogs(logs: [MacroLog]) {
var logsData = Data()
do {
let encoder = JSONEncoder()
logsData = try encoder.encode(logs)
_ = (logsData as NSData).write(to: fileUrl as URL, atomically: true)
} catch {
print("failed - \(error)")
}
}
关于将时间戳设为可选的评论中的答案解决了我的问题。这样,我以前的所有日志条目都会保留并继续加载。