我归档了一个采用 Codable 的对象,并实现了在应用程序进入后台时存储对象数据,在应用程序重新打开时加载它们。
但它不起作用。
终止并重新打开模拟器后如何检查 UserDefaults 的更改?
我制作了可编码的“机器”类,并实现了归档机器对象的“机器商店”类。
保存数据:
func saveChanges() {
var data = Data()
do {
data = try encoder.encode(self.machine)
} catch {
NSLog(error.localizedDescription)
}
UserDefaults.standard.set(data, forKey: MachineStore.Key)
}
加载数据中:
func loadMachine() {
guard let data = UserDefaults.standard.data(forKey: MachineStore.Key) else { return }
do {
machine = try decoder.decode(VendingMachine.self, from: data)
} catch {
NSLog(error.localizedDescription)
}
}
我在 AppDelegate 中使用了 MachineStore。
let machineStore: MachineStore = MachineStore()
func application(_ application: UIApplication,
didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
machineStore.loadMachine()
return true
}
func applicationDidEnterBackground(_ application: UIApplication) {
machineStore.saveChanges()
}