希望这个标题足够清楚。无论如何,似乎:
[NSKeyedArchiver archiveRootObject:rootObject toFile:path];
限于NSPropertyListBinaryFormat_v1_0
。
我需要格式是人类可读的 [so xml]。如果您有兴趣,这是项目的一部分,我最终将在 github 上发布一篇关于“如何对 GPS 应用程序进行单元测试”的博文
:-)
希望这个标题足够清楚。无论如何,似乎:
[NSKeyedArchiver archiveRootObject:rootObject toFile:path];
限于NSPropertyListBinaryFormat_v1_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_v1_0
来指定 XML 格式,而不是使用类方法。唯一的缺点是它需要几行额外的代码,因为要实际处理序列化,它不会只在一个步骤中返回一个 NSData 对象。
您必须使用方法 -(void) encodeWithCoder(NSCoder *)encoder { 对对象类进行编码
[coder encodeObject:name forKey:@"name"];
[coder encodeObject:address forKey:@"address"];
[coder encodeObject:position forKey:@"position"];
}