Objective c 如何使用NSPropertyListXMLFormat\u v1\u 0格式的NSKeyedArchiver将对象序列化为文件?
希望这个标题足够清楚。不管怎样,似乎:Objective c 如何使用NSPropertyListXMLFormat\u v1\u 0格式的NSKeyedArchiver将对象序列化为文件?,objective-c,cocoa,nskeyedarchiver,Objective C,Cocoa,Nskeyedarchiver,希望这个标题足够清楚。不管怎样,似乎: [NSKeyedArchiver archiveRootObject:rootObject toFile:path]; 仅限于NSPropertyListBinaryFormat\u v1\u 0 我需要的格式是人类可读的[so xml]。如果您感兴趣,这是我最终将在github上发布一篇关于“如何单元测试GPS应用程序”的博客文章的项目的一部分 :-)您必须使用NSPropertyListSerialization来转换它。基本上,假设要序列化的对象名
[NSKeyedArchiver archiveRootObject:rootObject toFile:path];
仅限于NSPropertyListBinaryFormat\u v1\u 0
我需要的格式是人类可读的[so 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\u v1\u 0
指定XML格式,而不是使用class方法。唯一的缺点是它需要额外的几行代码,因为要真正处理序列化,它不会一步返回一个NSData对象。您必须使用方法对对象类进行编码
-(无效)带编码器的编码器(NSCoder*)编码器{
}谢谢,杰森!我正在测试这个。
[coder encodeObject:name forKey:@"name"];
[coder encodeObject:address forKey:@"address"];
[coder encodeObject:position forKey:@"position"];