如何序列化对象在NSPropertyListXMLFormat_v1_0格式使用的NSKeyedArchiver到文件?

StackOverflow https://stackoverflow.com/questions/726053

希望这标题不够清楚。不管怎么说,似乎:

[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"];

}

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top