我正在尝试使用一个数组存储从其他VC收到的所有数据。我希望它是这样的,每次我导航到拥有这个存储阵列的VC时,我从其他VC传递的所有数据都存储在这个Store数组中,然后我可以在UITable View中显示。
然后当我导航回我的其他VC并收集数据然后发送回这个存储阵列时,之前的数据不会消失。 但是,通过我的尝试,每次退出VC时数据都会消失。
这是我的尝试:
class ViewController: UIViewController{
var DataGrab = [String]() //data from other VCs
func SAVE(){
UserDefaults.standard.set(DataGrab, forKey: "Save")
if let ToSave = UserDefaults.standard.value(forKey: "Save") as? [String] {
print(ToSave)
}
}
override func viewDidLoad() {
super.viewDidLoad()
print("DataGrab", DataGrab)
SAVE()
}
为什么会这样?
答案 0 :(得分:0)
首先,让你的阵列出来。然后,将新数据附加到您在UserDefaults中保存的阵列上,最后,在UserDefaults中使用相同的键覆盖该数组
if let ToSave = UserDefaults.standard.stringArray(forKey: "Save"){
DataGrab += ToSave
UserDefaults.standard.set(DataGrab, forKey: "Save")
}
答案 1 :(得分:0)
您正在保存数据正确但是当再次加载视图时,您再也没有为它提供价值我想尝试使用
self. DataGrab = UserDefaults.standard.object(forKey: "Save") as! String
然后在您想要的任何地方使用DataGrab,但使用上面的行将已保存的数据放入DataGrab
然后打印DataGrab 当您要检查是否存储值时,在Willappear中尝试打印时运行Didload 试试吧