我允许将应用程序数据(它是10.7上的Mac应用程序)导出为XML文件,我希望能够导出/导入XML的一个字段是NSData
字段。这样做的正确/可接受的方式是什么?我应该convert to base64并将该字符串写入XML吗?
我不想使用类别来推广我自己的解决方案,因为链接问题的已接受答案(链接到Matt Gallagher's solution)。
更新
我刚刚发现了NSPropertyListSerialization
类。我抱有希望,但它只有静态序列化方法,返回NSData
表示。
答案 0 :(得分:0)
我意识到(正如我更新提到的)我可以使用NSPropertyListSerialization类,因为NSData
返回的-dataWithPropertyList:format:options:error:
只是一个UTF-8字符串。这就是我用来序列化的内容:
NSData *data = value;
NSError *error = nil;
NSData *plistData = [NSPropertyListSerialization dataWithPropertyList:data
format:NSPropertyListXMLFormat_v1_0
options:0
error:&error];
if (error) {
NSLog(@"Error serializing data to plist XML: %@", error);
} else {
NSString *plistString = [[NSString alloc] initWithData:plistData encoding:NSUTF8StringEncoding];
NSXMLElement *dataElement = [NSXMLElement elementWithName:field
stringValue:plistString];
}
反序列化:
NSData *plistData = [element.stringValue dataUsingEncoding:NSUTF8StringEncoding];
NSData *originalData = [NSPropertyListSerialization propertyListWithData:plistData
options:NSPropertyListImmutable
format:NULL
error:&error];
if (error) {
NSLog(@"Error deserializing data from plist XML: %@", error);
} else {
value = originalData;
}