Я использую что-то вроде кода ниже, чтобы сохранить NSDictionary объектов на устройстве. Есть ли способ открыть этот архив, перейдите в элементы Словаря, которые он содержит, и в идеале , отредактируйте данные? Я полагаю, что нет, не надежно, поскольку оптимизация, сделанная при сохранении, затрудняет интерпретацию архива ... по крайней мере, это выглядит так, когда открывается что-то вроде Редактор списка свойств. Например, если некоторые из моих объектов имеют аналогичную NSString, похоже, что NSString только архивируется один раз ... изменяя структуру NSDictionary от того, что я ожидал.Возможно надежно открыть и отредактировать архив NSKeyedArchiver?
- (BOOL)writeDataToFile {
NSMutableData *data = [[NSMutableData alloc] init];
NSKeyedArchiver *archiver = [[NSKeyedArchiver alloc] initForWritingWithMutableData:data];
[archiver encodeObject:myDictionary forKey:kDataKey];
[archiver encodeInteger:kDataFileVersion forKey:kDataVersionKey];
[archiver finishEncoding];
BOOL success = [data writeToFile:[self dataFilePath] atomically:YES];
[archiver release];
[data release];
return success;
}
Мне было просто любопытно, может быть, я не замечал или не знал, что-то * вещь * или какой-то инструмент *, который мог бы анализировать эти файлы. Зачем? В основном, чтобы проверить, как приложение реагировало на различные типы данных в архиве. Ничего не связано с CD или SQLite. – Meltemi
Это довольно бесполезный ответ на действительный запрос. Например, мне нужно сравнить две версии такого файла plist (т. Е. Файлы «layout» и «elements», созданные редактором схемы основных данных Xcode. В этом случае сравнение исходных файлов plist, даже когда они превращаются в текстовые слои , не работает хорошо, так как многие идентификаторы могут быть изменены, даже если в модель были внесены незначительные изменения. Мне нужно увидеть компоновку объектов этих архивных объектов, чтобы сообщить, что действительно изменилось. –
Факт остается фактическим внутренним кодирование этих файлов - это деталь реализации, которая может измениться с одной версии операционной системы на другую. Маловероятно, но это будет плохая идея, чтобы попытаться разобрать ее вручную и совершенно глупо, чтобы попытаться записать ее снова. структура данных и имена ее ключей заблаговременно, чтобы иметь возможность сделать это безопасно. Даже тогда класс * real *, который сворачивает его, может сделать что-то внутреннее в архивах, созданных для более ранней версии этого класса. ** BAD IDEA. ** –