gpt4 book ai didi

arrays - 使用 NSKeyedArchiver 保存和加载对象数据 - 对象变量更改后数据丢失

转载 作者:行者123 更新时间:2023-11-30 12:06:01 24 4
gpt4 key购买 nike

我正在使用 NSKeyedArchiver() 在 Swift 中保存和加载对象。

问题是当对象变量发生变化时,例如向对象添加新变量,NSKeyedArchiver() 无法解码最后保存的对象。

func tripsDataFilePath() -> URL {
return getDocumentsDirectory().appendingPathComponent("Data.plist")
}

我用于保存的代码:

func saveData() {
NSKeyedArchiver.archiveRootObject(data, toFile: dataFilePath().path)

}

和加载代码:

func loadData() {
if let data = NSKeyedUnarchiver.unarchiveObject(withFile: dataFilePath().path) {
project = data as! [Project]
}
}

有什么方法可以防止更改对象结构时数据丢失(无法加载最后一个对象)?

在开发 iOS 应用程序的第一个版本时,这并不重要。但想象一下,用户下载了该应用程序,并且在新版本中我想添加需要更改当前数据对象的新功能!那么用户将丢失所有数据。

最佳答案

我发现问题出在文件格式上。

我使用这个名称来保存 NSKeyedArchiver 对象:“Data.plist”

当我删除“.plist”格式时,问题就解决了。

关于arrays - 使用 NSKeyedArchiver 保存和加载对象数据 - 对象变量更改后数据丢失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46671086/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com