2010-03-15 80 views
7

当我使用NSKeyedArchiver是写入* .plist的数据时,我看到过一些例子,其中输出文件为* .txt,甚至根本没有扩展名?NSKeyedArchiver保存的格式是什么?

-(void)saveCore { 
    NSMutableData *data = [[NSMutableData alloc] init]; 
    NSKeyedArchiver *archiver = [[NSKeyedArchiver alloc] initForWritingWithMutableData:data]; 
    [archiver encodeObject:reactorCore forKey:@"CORE"]; 
    [archiver finishEncoding]; 
    [data writeToFile:[self dataFilePath] atomically:YES]; 

    [data release]; 
    [archiver release]; 
} 

加里

+0

@JasonCoco并非如此。查看Ole Begemann的答案。 – 2013-08-16 13:25:08

+0

@JonaChristopherSahnwaldt确实如此。生成的数据是二进制plist数据,它的结构是完全专有的。是的,你可以将这个二进制plist数据转换成其他的东西,比如一个xml plist,但是它并不能使plist组织的专有性更低,也不意味着你可以假设任何给定的形式。它可以很容易地在不同版本之间进行更改,如果他们想要并且在过去。 – 2013-08-16 20:15:54

+0

@JasonCoco我不明白'二元plist'是什么意思。我以为你的意思是一种二进制文件格式,而XML不是一种二进制格式。据我所知,plist XML格式自其概念以来一直没有改变。 – 2013-08-19 21:47:45

回答

14

你可以使用任何你想要的文件扩展名。它与NSKeyedArchiver使用的实际文件格式完全无关。默认情况下,存档将采用二进制形式,但如果将存档器的outputFormat属性设置为NSPropertyListXMLFormat_v1_0,则它将编写XML plist。当你这样做时,你应该给你的文件一个.plist或.xml的扩展名。

+0

谢谢你Ole,非常感谢。 – fuzzygoat 2010-03-15 18:27:48

+1

这是100%正确的。请注意,如果您在TextMate中打开二进制plist文件,它将自动转换为ASCII(顶部为“!!! BINARY PROPERTY LIST WARNING !!!”)......这可能会让人困惑。 – 2016-03-17 21:42:50