如何序列化对象在NSPropertyListXMLFormat_v1_0格式使用的NSKeyedArchiver到文件?
-
05-09-2019 - |
题
希望这标题不够清楚。不管怎么说,似乎:
[NSKeyedArchiver archiveRootObject:rootObject toFile:path];
被限制为NSPropertyListBinaryFormat_v1_0
。
我需要的格式是人类可读[所以XML]。如果你有兴趣,这是项目的一部分,我最终会忍受在github上有一篇博客文章“如何进行单元测试GPS应用”
: - )
解决方案
您必须使用NSPropertyListSerialization
将其转换。基本上,假设你序列化对象被称为myObject
和最终的文件存储在myPath
,你会使用类似下面的代码片段它序列化到XML:
NSString *error = nil;
NSData *mySerializedObject = [NSKeyedArchiver archivedDataWithRootObject:myObject];
NSData *xmlData = [NSPropertyListSerialization dataFromPropertyList:mySerializedObject
format:NSPropertyListXMLFormat_v1_0
errorDescription:&error]:
if( xmlData ) {
[xmlData writeToFile:myPath atomically:YES];
} else {
NSLog(error);
[error release];
}
其他提示
除了使用类方法,尝试创建的NSKeyedArchiver的一个实例,并使用setOutputFormat:NSPropertyListXMLFormat_v1_0
指定XML格式。唯一的缺点是它会采取的代码一些额外的线,因为实际处理序列化,一步到位将不只是返回一个NSData对象。
您必须通过使用方法来编码对象类 - (无效)encodeWithCoder(NSCoder *)编码器{
[coder encodeObject:name forKey:@"name"];
[coder encodeObject:address forKey:@"address"];
[coder encodeObject:position forKey:@"position"];
}
不隶属于 StackOverflow