将对象存档为只读文件

时间:2014-04-11 13:29:34

标签: objective-c cocoa nsfilemanager nskeyedarchiver

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

有没有什么方法可以将根对象存档为只读文件或以其他方式阻止用户编辑它们?他们被埋没在应用程序支持中,所以不能超级访问,但我想安全地玩它。

2 个答案:

答案 0 :(得分:3)

您的应用程序应该能够处理这种错误。

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

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

答案 1 :(得分:2)

我认为有一种方法可以避免可能会丢失已保存的状态(最后用户可能只是删除文件),但是如果您担心用户操纵数据,则应{{ 3}}。

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

总而言之,我认为构建系统更好/更安全,因为有人试图绕过你的安全考虑,而不是试图阻止用户操纵/删除数据,只是确保无效数据是没有加载。例如,如果数据无效/损坏/丢失,只需恢复为默认值(即应用程序首次启动)。