无法从UserDefaults中检索到Date对象,Swift。

3
我想向UserDefaults.standard发布并检索一个Date对象。目前,我使用UserDefaults.standard.set(firstDate, forKey: "Date")发布日期对象,并使用inDate = UserDefaults.standard.object(forKey: "Date")检索它,其中inDate之前被声明为一个Date对象。
然而,当我这样做时,我收到一个错误信息:Cannot assign value of type 'Date' to type 'Any'。如果我试图将其强制转换为Date类型,程序会崩溃。如果我以有条件的方式(as?)进行强制转换,则inDate会变成nil。非常感谢您的帮助。

你确定 firstDate 是一个 Date 对象吗? - Y.Bonafons
你在哪里访问“Date”时遇到了问题?是从“UserDefaults”还是从“CoreData”中检索它? - Adrian
1个回答

7
为了在UserDefaults中设置日期对象的值,以下是实现方法:
let yourDate = Date() // current date
UserDefaults.standard.set(yourDate, forKey: "YourDefaultKey")

要检索它,您需要使用以下内容:
let yourDate = UserDefaults.standard.value(forKey: "YourDefaultKey") as! Date

谢谢,就是这样。问题是尝试使用 standard.object 而不是 standard.value 进行检索。 - jacob_g
我要补充一点,如果你正在尝试从Core Data获取最近的日期,将其存储在UserDefaults中可能不是最佳选择。在这种情况下,您可能希望设置一个批量大小为1的NSFetchRequest,按降序获取并使用来自获取结果的日期。 - Adrian

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接