Objective c 将对象归档到只读文件

Objective c 将对象归档到只读文件,objective-c,cocoa,nsfilemanager,nskeyedarchiver,Objective C,Cocoa,Nsfilemanager,Nskeyedarchiver,我让我的应用程序使用NSKeyedArchiver archiveRootObject:toFile:将一些对象保存到.sav文件中;然而,我意识到,如果用户在textedit中打开其中一个.sav文件并对其进行更改,应用程序将无法在下次打开时解除对象的归档,并将停止工作 是否有任何方法可以将根对象归档为只读文件,或者阻止用户编辑它们?它们隐藏在应用程序支持中,因此无法超级访问,但我希望安全起见。我不认为有任何方法可以避免最终用户可能会丢失保存的状态,用户可以简单地删除文件,但是如果您担心用户操

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


是否有任何方法可以将根对象归档为只读文件,或者阻止用户编辑它们?它们隐藏在应用程序支持中,因此无法超级访问,但我希望安全起见。

我不认为有任何方法可以避免最终用户可能会丢失保存的状态,用户可以简单地删除文件,但是如果您担心用户操纵数据,您应该这样做

我认为这是一种避免归档损坏数据和保证完整性的方法,我没有进一步探讨这个主题,因此我不能确定这是否会允许特定字段的内容发生更改,即对象类型相同,但值不同


总之,我认为在构建系统时,最好/更安全地考虑到有人试图规避您的安全性,而不是试图阻止用户操作/删除数据,只是确保没有加载无效数据。例如,如果无效/损坏/丢失的数据只是恢复到默认值,即应用程序是第一次启动。

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

我认为这是一种避免归档损坏数据和保证完整性的方法,我没有进一步探讨这个主题,因此我不能确定这是否会允许特定字段的内容发生更改,即对象类型相同,但值不同


总之,我认为在构建系统时,最好/更安全地考虑到有人试图规避您的安全性,而不是试图阻止用户操作/删除数据,只是确保没有加载无效数据。例如,如果数据无效/损坏/丢失,只需恢复为默认值,即应用程序是第一次启动。

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

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


不过,您可以使用某种校验和来验证文件完整性,但在这种情况下,您可能需要自己进行验证。

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

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


不过,你可以使用某种校验和来验证文件完整性,但在这种情况下,你可能需要自己进行验证。

是的,我最终选择了这条路线,如果有什么东西损坏了,就重置应用程序中的所有数据。是的,我最终选择了这条路线,如果有什么东西损坏了,就重置应用程序中的所有数据。