Следующая ситуация: я использую несколько устройств, которые используют структуру данных. Если я сейчас раскрою ключи структуры для более новых версий, новые структуры кодируются, а затем синхронизируются. В результате синхронизации для декодирования используется старая структура данных. При последующей синхронизации с новыми устройствами новые ключи теряются. Как я могу предотвратить это?
Используйте игровую площадку
import Foundation
struct OLD_API: Codable {
var text: String
}
struct NEW_API: Codable {
var text: String
let value: Int
}
// Init data on device with NEW data struct
var newDevice = NEW_API(text: "Dog", value: 200)
let data = try! JSONEncoder().encode(newDevice)
// .. sync to other devices (new to old)
// modified data on device with OLD data struct
var oldDevice = try! JSONDecoder().decode(OLD_API.self, from: data)
oldDevice.text = "Cat"
let newData = try! JSONEncoder().encode(oldDevice)
// .. sync to other devices (old to new)
// decode data on device with NEW data struct
newDevice = try! JSONDecoder().decode(NEW_API.self, from: newData)
print(newDevice)