gpt4 book ai didi

ios - 使用 NSUserDefaults 或 CoreData 存储事件日历

转载 作者:行者123 更新时间:2023-11-29 02:17:59 25 4
gpt4 key购买 nike

所以我有一个应用程序,它在启动时会导入用户的特定日历并显示与其相关的所有事件。我使用 NSPredicate 对它们进行排序并将事件存储在数组中。

我希望能够在每次启动应用程序时存储这个数组,然后我希望以另一种方法调用它并在以后从相同的日历事件中减去它。其想法是仅保留已更改的项目。

我曾尝试使用 NSUserDefaults 来存储大约 70 项长的数组,但出现错误:属性列表对格式无效:200(属性列表不能包含“CFType”类型的对象)

我尝试使用 NSKeyedArchiver 将数组转换为 NSData,但这也会导致崩溃:异常 'NSInvalidArgumentException',原因:'-[EKEvent encodeWithCoder:]

关于如何存储和调用我的事件数组的任何建议。我在标题中提到 coreData 的原因是我担心你们中的一些人会告诉我使用对我来说是新的。

最佳答案

你的方法通常没问题,但你在实际保存时失败了,因为你不能直接保存 EKEvent(这在用户默认设置中是不允许的,并且它没有实现 NSCoding).

您需要从每个 EKEvent 中提取部分,例如 eventIdentifier,并将它们存储在另一个您可以添加到用户默认值的对象中(如字典)或者您可以存档(因此它及其内容需要符合 NSCoding)。

当您重新加载数据时,您将比较您保存的数据的每个元素,而不是比较整个 EKEvent(不清楚您是如何进行比较的)。

关于ios - 使用 NSUserDefaults 或 CoreData 存储事件日历,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28527160/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com