GData для iPhone не может использовать кодировщик

В приложении календаря, которое я пишу, я пытаюсь сохранить данные календаря локально, а также с помощью серверов Google, но мне не очень повезло. [GDataEntryCalendarEvent encodeWithCoder:] вызывает исключение, кажется, что GData этого не делает. Код, который я использую, -

NSMutableData *data = [[NSMutableData alloc] init];
NSKeyedArchiver *archiver = [[NSKeyedArchiver alloc] initForWritingWithMutableData:data];

int keyNum = 1;
for (NSArray *eventsInfo in [calendarData allValues]) {
    NSString *theKey = [NSString stringWithFormat:@"%i",keyNum];
    [archiver encodeObject:eventsInfo forKey:theKey];
    keyNum ++;
}

[archiver finishEncoding];

bool success = [data writeToFile:[Directories calendarDataFilePath] atomically:YES];

[archiver release];
[data release];

bool success = [calendarData writeToFile:[Directories calendarDataFilePath] atomically:YES];
NSLog(@"Calendar Data saved: %@",success);

и ошибка, которую я получаю, - [GDataEntryCalendarEvent encodeWithCoder:]: нераспознанный селектор отправлен экземпляру 0x4d60b40

Спасибо за любую помощь!


person SomaMan    schedule 28.06.2011    source источник


Ответы (1)


Чтобы любой объект можно было архивировать с помощью NSKeyedArchiver, его класс должен соответствовать протоколу NSCoding. GDataEntryCalendarEvent не соответствует этому, поэтому вы получаете эту ошибку. Вы не можете использовать этот подход для сохранения содержимого.

Чтобы сохранить экземпляр GDataEntryCalendarEvent локально, просмотрите this thread. в котором упоминается способ преобразования его в XML, который можно записать в файл.

person Deepak Danduprolu    schedule 28.06.2011
comment
Большое спасибо за ссылку - мне очень сложно найти хорошую документацию по материалам GData, так что это будет действительно полезно. - person SomaMan; 28.06.2011