如何使用 UserData 从一个 ViewController 保存到另一个 - 提醒 XCode Swift

How To Use UserData to Save From One ViewController To Another - Reminders XCode Swift

代码中需要进行重大修改 - 这没有意义,因为我是第一次编码。当我更新我的代码以及它何时可以工作时,我将更新问题。目前关闭。

在 SetReminderViewController 中,您总是会覆盖用户默认设置中的标题和日期键路径。因此,您的第一个提醒将被第二个提醒覆盖。您应该将它们存储在某种数组中。

使您的 MyReminder 模型可编码,这样您就可以将模型存储在 UserDefaults 中:

struct MyReminder: Codable {
    let title: String
    let date: Date
    let identifier: String
}

要检索和存储提醒,您可以更改 RemindersViewController 中的模型 属性:

var models: [MyReminder] {
    get {
        // Retrieve data from user defaults or return an empty array
        guard
            let data = UserDefaults.standard.data(forKey: "reminders"),
            let reminders = try? JSONDecoder().decode([MyReminder].self, from: data)
        else {
            return []
        }
        return reminders
    }
    set {
        // Store data in user defaults when encoding succeeds
        guard let data = try? JSONEncoder().encode(newValue) else { return }
        UserDefaults.standard.setValue(data, forKey: "reminders")
    }
}

现在您的模型 属性 处理了所有用户默认逻辑,您可以从 SetReminderViewController 中删除该逻辑:

// Remove these
userDefaults.setValue(titleField.text, forKeyPath: "title")
userDefaults.setValue(datePicker.date, forKeyPath: "date")

就是这样,一旦您将新条目添加到您的模型 属性,您的提醒将自动存储在用户默认设置中。当您重新打开您的应用程序时,将从用户默认设置中获取提醒。