更新 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)")
    }
}

关于将时间戳设为可选的评论中的答案解决了我的问题。这样,我以前的所有日志条目都会保留并继续加载。