NSKeyedUnarchiver unarchivedObjectOfClasses для разархивирования старых сохраненных файлов - PullRequest
0 голосов
/ 23 февраля 2020

В предыдущей версии моего приложения macOS я сохранял свои файловые документы таким образом

NSData *data = [NSKeyedArchiver archivedDataWithRootObject:object];
[data writeToFile:path atomically:YES];

Затем я читал и разархивировал файл таким образом

object = [NSKeyedUnarchiver unarchiveObjectWithData:data];

-

Теперь эти два метода устарели, поэтому я должен заархивировать этот файл, используя новый метод

[NSKeyedArchiver archivedDataWithRootObject:object requiringSecureCoding:NO error:nil];

, и я должен разархивировать этот файл следующим образом

classes = @[[NSArray class], [NSMutableArray class], [NSDictionary class], [NSMutableDictionary class], [NSDate class], [NSNumber class], [NSString class], [NSData class]];
[NSKeyedUnarchiver unarchivedObjectOfClasses:[NSSet setWithArray:classes] fromData:x error:nil];

Новые два метода работают, если используются вместе. Проблема в том, что новый метод

[NSKeyedUnarchiver unarchivedObjectOfClasses:[NSSet setWithArray:classes] fromData:x error:nil];

не разархивирует файлы предыдущих версий, заархивированные старым методом

[NSKeyedArchiver archivedDataWithRootObject:object];

Я не хотел бы продолжать использовать устаревший метод [NSKeyedUnarchiver unarchiveObjectWithData: data]; разархивировать мои старые файлы.

Знаете ли вы, как разархивировать файлы предыдущей версии, используя устаревший метод? Спасибо.

...