首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将任意NSData写入NSXMLElement的最佳方法

将任意NSData写入NSXMLElement的最佳方法
EN

Stack Overflow用户
提问于 2012-04-16 14:30:25
回答 1查看 1.1K关注 0票数 0

我允许将应用程序数据(10.7上的Mac应用程序)导出为XML文件,我希望能够将其导出/导入到/从XML导出/导入的字段是NSData字段。正确的/被接受的方法是什么?我是否应该转换为base64并将该字符串写入XML?

我不想像链接问题的公认答案(链接到马特·加拉赫溶液)那样使用类别来滚动我自己的解决方案。

更新

我刚刚发现了NSPropertyListSerialization类。我对此寄予厚望,但它只有返回NSData表示的静态序列化方法。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-04-17 14:42:59

我意识到(正如我的更新所暗示的那样)我可以使用NSPropertyListSerialization类,因为-dataWithPropertyList:format:options:error:返回的NSData只是一个UTF-8字符串。这就是我用来序列化的东西:

代码语言:javascript
复制
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];
}

和反序列化:

代码语言:javascript
复制
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;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10176079

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档