gpt4 book ai didi

swift - UserDefaults 不存储自定义 Swift 类属性

转载 作者:行者123 更新时间:2023-11-28 05:42:42 25 4
gpt4 key购买 nike

我正在使用中建议的方法 Saving custom Swift class with NSCoding to UserDefaults
存储自定义类对象。但似乎属性值没有保存——可能是由于类初始化覆盖了存储的值?或者更新后的值从未保存过?

class Test : Codable {

var testedValues: float

init () {
testedValues = 0.0
}
}

var myTest = Test()

// retrieve
if let testData = UserDefaults.standard.data(forKey: "myTest"),
let myTest = try? JSONDecoder().decode(Test.self, from: testData) {
}

//testValues is 0.0 each time the app starts up
print (myTest.testValues)

myTest.testValues += 1.0

//save in UserDefaults
if let encoded = try? JSONEncoder().encode(myTest) {
UserDefaults.standard.set(encoded, forKey: "myTest")
}

最佳答案

您已成功保存自定义类及其属性。您在这里犯的错误是您正在检索存储的值并打印新创建的实例。不要对两个实例使用相同的名称 myTest。将检索到的值存储在 myTest

if let testData = UserDefaults.standard.data(forKey: "myTest"),
let storedMyTest = try? JSONDecoder().decode(Test.self, from: testData) {
self.myTest = storedMyTest
}

要在更改时自动将 testedValues 保存在 UserDefaults 中,请使用这样的计算变量

class Test: Codable {
var testedValues: Double {
didSet {
//save in UserDefaults
if let encoded = try? JSONEncoder().encode(self) {
UserDefaults.standard.set(encoded, forKey: "myTest")
}
}
}
init () {
testedValues = 0.0
}
}

关于swift - UserDefaults 不存储自定义 Swift 类属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56016416/

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