说我有这样定义的自定义对象:NSUserDefaults的更改类属性后保存(SWIFT)
class Person {
firstName:String,
lastName:String,
age:Int
}
发布的应用程序版本后,说我想添加一个gender:String
属性。即使当前课程不包含性别属性,我该怎么做?
说我有这样定义的自定义对象:NSUserDefaults的更改类属性后保存(SWIFT)
class Person {
firstName:String,
lastName:String,
age:Int
}
发布的应用程序版本后,说我想添加一个gender:String
属性。即使当前课程不包含性别属性,我该怎么做?
您可以将其添加到应用程序的未来版本中。
首先,更新你的Person类,然后你可以设置一个值versionOfLastRun
并检查它是否为零。在这种情况下,你检查是否已经有一个Person保存在NSUserDefaults中,并且它是否创建了一个新的类实例来保存在NSUserDefaults中,使用性别并覆盖前一个Person对象。
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")
在应用程序中的下一个版本中,如果你想升级你的数据模型,你通过检查上次运行的版本做到这一点。
希望这回答你的问题。
优秀!正是我在找什么。谢谢 –
为什么不把它定义为结构? –
我不在乎它是否被定义为struct,class或enum。我只想知道如何编辑现有的nsuserdefaults属性。 –