NSKeyedUnarchiver initForReadingWithData: непонятный сбой архива
У меня есть следующая проблема при распаковке файла, который содержит строку xml.
Он выходит из строя по следующей строке:
NSKeyedUnarchiver *unarchiver = [[NSKeyedUnarchiver alloc] initForReadingWithData:data];
«данные» (27580 байт) исходят из:
- Быстрый способ только для предотвращения сбоя NSKeyedUnarchiver.decodeObject?
- Как преобразовать объекты NSKeyedArchiver в новые версии
- Почему NSKeyedUnarchiver существует, когда NSKeyedArchiver наследует NSCoder?
- Добавлена пользовательская структура, теперь Swift не может разблокировать данные
- Невозможно декодировать объект класса Employee для ключа (NS.object.0); класс может быть определен в исходном коде или библиотеке, которая не связана
NSMutableData *data = [NSData dataWithContentsOfURL:url];
И авария я получил:
Завершение приложения из-за неотображенного исключения «NSInvalidArgumentException», причина: « * – [NSKeyedUnarchiver initForReadingWithData:]: непонятный архив (0x62, 0x70, 0x6c, 0x69, 0x73, 0x74, 0x30, 0x30)
Файл был создан таким образом:
NSMutableData *data = [[NSMutableData alloc] init]; NSKeyedArchiver *archiver = [[NSKeyedArchiver alloc] initForWritingWithMutableData:data]; NSData *project = [ProjectToXML convertProject:SelectedProject]; [archiver encodeObject:project forKey:kProjectKey]; [archiver finishEncoding];
'convertProject:' в основном создает NSMutableString с содержимым xml и преобразует его в NSData таким образом ('encoding' является utf-8):
[xmlString dataUsingEncoding: CFStringConvertEncodingToNSStringEncoding(CFStringConvertIANACharSetNameToEncoding((__bridge CFStringRef)encoding)) allowLossyConversion:NO];