1

次のコードを使用してに変換NSArray EKEventしていますがNSData、変換されたのNSDataunarchiveObjectWithDatatoNSArrayです。変換中にオブジェクトが変更され、null値が保持されます。

なぜ表示さ れるのNULLですか?(出力を参照してください)。解決策を知っている人は教えてください。前もって感謝します。

私が書いたコード、

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

NSData *arrayData = [NSKeyedArchiver archivedDataWithRootObject:events];

NSArray *array = [NSKeyedUnarchiver unarchiveObjectWithData:arrayData];

出力は

events : ( "EKEvent <0x4ad840> {EKEvent <0x4ad840> {title =カレンダーで確認中 ; calendar = EKCalendar <0x4bf2f0> {title = カレンダー; type = Local; account = (null); allowModify = YES; color = 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; 変動 = 0; 繰り返し = (null); 出席者 = (null)}")

配列: ("EKEvent <0x4c1e60> {EKEvent <0x4c1e60> {title = ( null); カレンダー = (ヌル); アラーム = (ヌル); URL = (ヌル); lastModified = (null)}; 場所 = (ヌル); 開始日 = (null); 終了日 = (null); すべての日 = 0; フローティング = 1; 再発 = (ヌル); 出席者 = (null)}" )

4

2 に答える 2

1

最後に、カスタム EKEvent クラスを作成し、title、startdate、enddate などのすべての値を NSCoding に取得することで解決しました。その後、正常に動作します。

于 2012-06-13T04:56:18.530 に答える
0

プロトコルをNSArray確認しますが、しません。コードを実行しても例外が発生しないのは少し驚くべきことです。クラスは、アーカイブが機能することを確認する必要があります。NSCodingEKEventNSCoding

于 2012-05-15T12:42:05.887 に答える