В моем приложении используется кодируемая структура, например:
public struct UserProfile: Codable {
var name: String = ""
var completedGame: Bool = false
var levelScores: [LevelScore] = []
}
JSONEncoder()
использовался для сохранения закодированного массива UserProfile
s в пользовательские значения по умолчанию.
В предстоящем обновлении я хотел бы добавить новое свойство в эту структуру UserProfile
. Возможно ли это каким-то образом?
или мне нужно создать новую структуру Codable с теми же свойствами плюс одно новое свойство, а затем скопировать все значения в новую структуру, а затем начать использовать эту новую структуру вместо любого места, где ранее использовалась структура UserProfile
?
Если я просто добавлю новое свойство в структуру, то не смогу загрузить предыдущий закодированный массив UserProfile
s, поскольку структура больше не будет иметь соответствующих свойств. Когда я доберусь до этого кода для загрузки сохраненных пользователей:
if let savedUsers = UserDefaults.standard.object(forKey: "SavedUsers") as? Data {
let decoder = JSONDecoder()
if let loadedUsers = try? decoder.decode([UserProfile].self, from: savedUsers) {
loadedUsers
не декодируется, если свойства, которые были у UserProfile
при кодировании и сохранении, не содержат всех текущих свойств структуры UserProfile
.
Любые предложения по обновлению сохраненных свойств структуры? Или я должен пройти долгий путь и создать заново, поскольку я еще не планировал заранее включить это свойство ранее?
Спасибо за любую помощь!