6

取消归档包含 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];
4

0 回答 0