所以我有一个应用程序,在启动时导入用户的特定日历并显示与其相关的所有事件。我使用NSPredicate对它们进行排序并将事件存储在数组中。
我希望能够在每次启动应用程序时存储此数组,然后在另一种方法中,我希望能够回忆起它,并在以后的相同日历事件中将其减去。这个想法是只保留更改的项目。
我尝试使用NSUserDefaults来存储大约70个项目的数组,但是我收到一个错误:属性列表格式无效:200(属性列表不能包含类型' CFType'的对象)
我尝试使用NSKeyedArchiver将数组转换为NSData,但这会导致崩溃:异常' NSInvalidArgumentException',原因:' - [EKEvent encodeWithCoder:]
有关如何存储和调用我的事件数组的任何建议。我在标题中提到coreData的原因是我担心你们中的一些人会告诉我使用对我来说不熟悉的东西。
答案 0 :(得分:1)
您的方法通常没问题,但是您实际保存时会因为无法直接保存EKEvent
而丢失(在用户默认设置中不允许这样做,并且它不会#&# 39;实施NSCoding
)。
您需要从每个eventIdentifier
中提取部件,例如EKEvent
,并将它们存储在您可以添加到用户默认值(如字典)的另一个对象中,或者可以存档(所以它和它的内容需要符合NSCoding
)。
当你重新加载数据时,你会比较你保存的数据的每个元素,而不是比较整个EKEvent
(不清楚你是如何进行比较的。)