我允许将应用程序数据(10.7上的Mac应用程序)导出为XML文件,我希望能够将其导出/导入到/从XML导出/导入的字段是NSData字段。正确的/被接受的方法是什么?我是否应该转换为base64并将该字符串写入XML?
我不想像链接问题的公认答案(链接到马特·加拉赫溶液)那样使用类别来滚动我自己的解决方案。
更新
我刚刚发现了NSPropertyListSerialization类。我对此寄予厚望,但它只有返回NSData表示的静态序列化方法。
发布于 2012-04-17 14:42:59
我意识到(正如我的更新所暗示的那样)我可以使用NSPropertyListSerialization类,因为-dataWithPropertyList:format:options:error:返回的NSData只是一个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;
}https://stackoverflow.com/questions/10176079
复制相似问题