Swift アプリバージョンアップでJSON変更(要素追加)対応

現在

class MonthlyCalendarSettingData: Codable {
    var disp: Bool = false
    var x: Float = 0.0
    var y: Float = 0.0
    var monthDayColor: ColorRGBA = ColorRGBA()
    var paintColor: ColorRGBA = ColorRGBA()
    var lineColor: ColorRGBA = ColorRGBA()
    var dayofWeekColor: ColorRGBA = ColorRGBA()
}

バージョンアップ

追加要素はオプショナルにしておけば、デコード時に要素がなくても大丈夫。
nilが入る。
追加要素を触るとき気をつけないといけないが、
デコード後にnil時は初期値設定するupdaterを作っておけば良い。

class MonthlyCalendarSettingData: Codable {
    var disp: Bool = false
    var x: Float = 0.0
    var y: Float = 0.0
    var monthDayColor: ColorRGBA = ColorRGBA()
    var paintColor: ColorRGBA = ColorRGBA()
    var lineColor: ColorRGBA = ColorRGBA()
    var dayofWeekColor: ColorRGBA = ColorRGBA()
    
    // add Ver 1.1
    var nextMonth: Bool? = nil
}

updater example

func updateVersion(_ refillSettingData: RefillSettingData) {
    // add Ver 1.1
    if refillSettingData.monthCalendar.nextMonth == nil {
        print("update Ver 1.1")
        refillSettingData.monthCalendar.nextMonth = false
    }
}

Swift

Posted by shi-n