使用@Published将字典存储在UserDefaults中

时间:2020-04-26 04:47:28

标签: swift swiftui

我有这个:

@Published var mealsAndTime: [String: Date] = UserDefaults.standard.dictionary(forKey: "mealsAndTime") {
    didSet {
        UserDefaults.standard.set(self.mealsAndTime, forKey: "mealsAndTime")
    }
}

它告诉我:

无法将类型“ [String:Any]”的值转换为预期的参数类型“ [String:Date]”

这是怎么了?

谢谢

1 个答案:

答案 0 :(得分:1)

投射... UserDefaults不了解内部值,因此类型为Any。如您所知,您必须显式地进行类型转换,但为了安全起见,以防万一。

所以解决办法是

@Published var mealsAndTime: [String: Date] =
    UserDefaults.standard.dictionary(forKey: "mealsAndTime") as? [String: Date] ?? [:] {
    didSet {
        UserDefaults.standard.set(self.mealsAndTime, forKey: "mealsAndTime")
    }
}
相关问题