У меня есть следующий фрагмент кода, который я использую для десериализации некоторых данных, хранящихся в базе данных sqlite3, которые были восстановлены с помощью утилиты адресной книги iphone.
if (strcmp(azColName[i], "ZADDRESSES") == 0) {
NSData *data;
NSString *error;
data = [NSData dataWithBytes:argv[i] length:strlen(argv[i])];
NSPropertyListFormat format;
NSMutableArray *emails = [NSPropertyListSerialization
propertyListFromData:data
mutabilityOption:NSPropertyListImmutable
format:&format
errorDescription:&error];
NSString *content = [[[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding] autorelease];
azColName [i] из базы данных sqllite (char *). Этот код является частью обратного вызова БД. При осмотре кажется, что это какой-то список:
2012-03-05 00:57:22.467 exporter[20488:707] ZADDRESSES = bplist00‘JKT$topX$objectsX$versionY$archiver—Troot .. and so on ...
К сожалению, это преобразование всегда терпит неудачу. Ошибка заполняется «Преобразование строки не удалось. Строка пуста.»
Объект данных не имеет проблем, но десериализация завершается неудачно. Почему он считает, что строка здесь пуста?