1

我正在使用以下代码转换NSArray EKEvent为,NSData转换NSData为. 转换时,对象被更改并保存该值。unarchiveObjectWithDataNSArraynull

为什么会显示 NULL。(请参阅输出)。任何知道解决方案的人告诉我。提前致谢。

我写的代码,

NSArray *events = [[self.eventStore eventsMatchingPredicate:predicate]retain];

NSData *arrayData = [NSKeyedArchiver archivedDataWithRootObject:events];

NSArray *array = [NSKeyedUnarchiver unarchiveObjectWithData:arrayData];

输出是

事件:(“EKEvent <0x4ad840> {EKEvent <0x4ad840> {title =检查日历;日历 = EKCalendar <0x4bf2f0> {title = 日历;类型 = 本地;帐户 =(空);allowsMo​​dify = YES;颜色 = 0.443137 0.101961 0.462745 1.000000}; 警报 = (\n \"EKAlarm <0x4be630> {triggerInterval = -300.000000}\"\n); URL = (null); lastModified = 2012-05-14 12:15:32 +0000}; 位置 = (null); startDate = 2012-05-11 01:30:00 +0000; endDate = 2012-05-19 17:30:00 +0000; allDay = 0; float = 0; 重复 = (null); 参加者 = (null)}" )

数组: ( "EKEvent <0x4c1e60> {EKEvent <0x4c1e60> {title = ( null); 日历 = (null); 警报 = (null); URL = (null); lastModified = (null)}; 位置=(空);开始日期 = (null); endDate = (null); allDay = 0; 浮动 = 1; 复发=(空);参加者 = (null)}" )

4

2 回答 2

1

最后通过创建自定义 EKEvent 类并获取每个值(如标题、开始日期、结束日期)到 NSCoding 来解决。然后它工作正常。

于 2012-06-13T04:56:18.530 回答
0

虽然NSArray确认NSCoding协议,EKEvent但不确认。运行代码时没有出现异常,这有点令人惊讶,该类必须确认NSCoding存档才能工作。

于 2012-05-15T12:42:05.887 回答