保存后更改NSUserDefaults类属性(Swift)

时间:2016-10-15 14:30:21

标签: swift nsuserdefaults updating saving-data

假设我有一个定义的自定义对象:

class Person {
  firstName:String,
  lastName:String,
  age:Int
}

发布应用版本后,请说我想添加gender:String属性。即使当前类不包含性别属性,我该怎么做呢?

1 个答案:

答案 0 :(得分:2)

您可以在应用的未来版本中添加它 首先,更新您的Person类,然后您可以设置值versionOfLastRun并检查它是否为零。在这种情况下,您检查是否已在NSUserDefaults中保存了一个Person,如果它已经创建了一个新的类实例,以保存在 NSUserDefaults 中,并使用性别并覆盖之前的人物对象。

let currentVersion = Bundle.main.infoDictionary!["CFBundleShortVersionString"] as! String
let versionOfLastRun = UserDefaults.standard.value(forKey: "VersionOfLastRun") as? String

if versionOfLastRun == nil {
    if (UserDefaults.standard.value(forKey: "Person") as? Person) != nil {
        let newPerson = Person( //... )
        UserDefaults.standard.set(currentVersion, forKey: "Person")
    } else {
        print("First run")
    }
} else if !(versionOfLastRun! == currentVersion)  {
    print("App updated")

    // Upgrade your model

} else {
    print("Nothing changed since last run")
}

UserDefaults.standard.set(currentVersion, forKey: "VersionOfLastRun")

在应用程序的下一个版本中,如果要升级数据模型,请通过检查上次运行的版本来执行此操作。

希望这能回答你的问题。