取消归档包含 xml 字符串的文件时出现以下问题。
它在以下行崩溃:
NSKeyedUnarchiver *unarchiver = [[NSKeyedUnarchiver alloc] initForReadingWithData:data];
“数据”(27580 字节)来自:
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:' 基本上用 xml 内容创建了一个 NSMutableString 并以这种方式将其转换为 NSData('encoding' 是 utf-8):
[xmlString dataUsingEncoding: CFStringConvertEncodingToNSStringEncoding(CFStringConvertIANACharSetNameToEncoding((__bridge CFStringRef)encoding)) allowLossyConversion:NO];