无法以日期格式保存自定义默认值swift

bihw5rsg  于 2022-11-28  发布在  Swift
关注(0)|答案(1)|浏览(99)

结构会以Date?格式储存日期值,但在储存之后,它会以时间戳记格式传回日期值。

if let data = try? JSONEncoder().encode(contact),
     let dict = try? JSONSerialization.jsonObject(with: data, options: .Element.fragmentsAllowed) {
            defaults.set(
            dict,
            forKey: "contact")
    }
    print(defaults.object(forKey: "contact"))
}

请告诉我如何将日期保存为日期格式。在这种情况下,有必要保留整个结构。

jk9hmnmh

jk9hmnmh1#

正如已经指出的,JSON不支持Date类型,默认情况下它会将其编码为整数。
但是看起来你想把它解码回来,然后再用Date。这可以通过使用JSONDecoder()来实现。

let decoded = try JSONDecoder().decode("of whatever type the encoded object was here".self, data: data)

你得到了你编码的相同对象。
顺便说一下,你不需要使用JSONSerialization来存储你的对象,你可以直接存储数据。

UserDefaults.standard.set(data, forKey: "contact")

和检索数据:

let data = UserDefaults.standard.data(forKey: "contact")

并像上面所示的那样解码它。

相关问题