0

希望这个标题足够清楚。无论如何,似乎:

[NSKeyedArchiver archiveRootObject:rootObject toFile:path];

限于NSPropertyListBinaryFormat_v1_0

我需要格式是人类可读的 [so xml]。如果您有兴趣,这是项目的一部分,我最终将在 github 上发布一篇关于“如何对 GPS 应用程序进行单元测试”的博文

:-)

4

3 回答 3

6

你必须使用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];
}
于 2009-04-07T14:48:58.627 回答
6

尝试创建 NSKeyedArchiver 的实例并使用setOutputFormat:NSPropertyListXMLFormat_v1_0来指定 XML 格式,而不是使用类方法。唯一的缺点是它需要几行额外的代码,因为要实际处理序列化,它不会只在一个步骤中返回一个 NSData 对象。

于 2009-04-07T14:58:04.457 回答
0

您必须使用方法 -(void) encodeWithCoder(NSCoder *)encoder { 对对象类进行编码

[coder encodeObject:name forKey:@"name"];
[coder encodeObject:address forKey:@"address"];
[coder encodeObject:position forKey:@"position"];

}

于 2013-02-20T07:37:40.760 回答