Можно ли надежно открыть И отредактировать архив NSKeyedArchiver?
-
18-09-2019 - |
Вопрос
Я использую что-то вроде приведенного ниже кода для сохранения NSDictionary объектов на устройстве.Есть ли способ открыть этот архив, перейти к элементам словаря, которые он содержит, и, в идеале, редактировать данные?Я предполагаю, что нет, ненадежно, поскольку оптимизация, выполняемая при сохранении, затрудняет архивирование interpret...at по крайней мере, это выглядит так при открытии с помощью чего-то вроде Редактор списка свойств.Например, если некоторые из моих объектов используют похожую NSString, оказывается, что указанная NSString архивируется только один раз...изменение структуры NSDictionary по сравнению с тем, что я ожидал.
- (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;
}
Решение
Настоящий вопрос заключается в том, "должны ли вы?" ...вероятно, нет.
Конечно, вы могли бы проанализировать формат файла, но этот формат является деталью реализации, которая мог бы меняйся, и это просто не стоит того.
Почему ты пытаешься это сделать?Вы пытаетесь вносить инкрементные правки в стиле Core Data + sqlite?Решил бы вашу проблему просто старый sqlite сам по себе?