NSData与存档

时间:2014-04-13 19:50:10

标签: ios cocoa-touch nsdata nskeyedarchiver nscoding

我想我只是不知道区别是什么,因为我不理解"黑盒子"但使用这些方法中的任何一种方法有什么区别?

我应该何时使用

NSData
writeToFile: atomically:

我应该何时使用

[NSKeyedArchiver archiveRootObject: toFile:]

使用每种产品的优缺点是什么?

1 个答案:

答案 0 :(得分:1)

这两个API做了不同的事情:

  • NSData将“原始”字节写入文件。您可以通过假设您回读的字节位于正确的位置来恢复这些字节后面的结构。从某种意义上说,这类似于将曲奇刀具应用于具有某种结构的零件,期望正确的零件出现在正确的位置。这种方法的直接后果是数据无法承受代码的变化 - 如果您读取数据的结构发生了变化,那么在更改之前保存的数据将导致错误。
  • NSKeyedArchiver保留对象的结构及其数据。这会导致存档略大,但在对基础数据进行更改时,结构会变得更加健壮。

如果您需要保存一小段非结构化数据,则可以使用其中任何一种。如果您保存的数据具有结构,则更喜欢NSKeyedArchiver,特别是如果您希望将来保留一些灵活性。