将对象归档到只读文件

Posted

技术标签:

【中文标题】将对象归档到只读文件【英文标题】:Archiving object to a read-only file 【发布时间】:2014-04-11 13:29:34 【问题描述】:

我的应用程序使用NSKeyedArchiver archiveRootObject: toFile: 将一些对象保存到 .sav 文件中;但是,我意识到,如果用户在 textedit 中打开其中一个 .sav 文件并进行更改,该应用程序将无法在下次打开时取消归档对象,并且会停止工作。

有什么方法可以将根对象归档为只读文件或以其他方式阻止用户编辑它们?它们埋在应用程序支持中,因此不是超级容易访问的,但我想安全一点。

【问题讨论】:

【参考方案1】:

您的应用程序应该能够处理此类错误。

另外,假设您确实存档了数据,然后将文件设置为只读。什么会阻止坚定的用户再次使其读写?

不过,您可以使用某种校验和来验证文件的完整性,但在这种情况下您可能不得不自己动手。

【讨论】:

【参考方案2】:

我认为你没有办法避免丢失保存状态(最终用户可以简单地删除文件),但是如果你担心用户操纵数据,你应该@987654321 @。

我相信这是一种避免取消归档“损坏”数据并保证完整性的方法,我没有进一步探讨这个话题,所以我不能确定这是否会允许特定字段的内容是改变(即对象类型相同,但值不同)。

总之,我认为构建您的系统时考虑到有人试图绕过您的安全性而不是试图阻止用户操作/删除数据,而只是确保无效数据是更好/更安全的未加载。例如,在无效/损坏/丢失数据的情况下,只是恢复为默认值(即就像应用程序第一次启动一样)。

【讨论】:

是的,我最终选择了这条路线,如果出现损坏,只需重置应用程序中的所有数据。

以上是关于将对象归档到只读文件的主要内容,如果未能解决你的问题,请参考以下文章

iOS归档使用

iOS 对象的归档

IOS 数据存储(NSKeyedArchiver 归档篇)

iOS -- 对象归档(将对象存入文件中)

JMeter的CSVRead文件读取只能读到第一行的内容

python文件的操作