我有一个看起来像这样的数据模型:
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)")
}
}
注释中关于使时间戳可选的答案解决了我的问题。这样,我以前的所有日志条目都会被保留并加载。