GData для iPhone не может использовать кодировщик - PullRequest
0 голосов
/ 28 июня 2011

В приложении для календаря, которое я пишу, я пытаюсь сохранить данные календаря локально, а также используя серверы Googles, но мне не очень везет. [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

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

1 Ответ

1 голос
/ 28 июня 2011

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

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

...