用户可以从应用程序外部编辑 plist 吗?

问题描述

我正在使用 UserDefaults 来保存一些持久数据(应用程序的状态,而不是需要保护的东西)。此数据 (AFAIK) 保存在 plist 中。用户可以在应用程序外编辑这个 plist 吗? 我试过了,虽然看起来可能,但当我运行应用程序时,它会使用应用程序中的最后一个值覆盖更改。 如果不可能,那么“defaults write ...”命令(通过终端)有什么用?

这个问题与 iOS 和 macOS 都相关

解决方法

这取决于您如何使用 UserDefaults。 UserDefaults 实际上只是一个字典,可以方便地读/写 plist 文件。您可以自行决定该文件的存储位置,从而决定用户是否可以在应用程序之外更改该文件。您负责在启动时以及可能在它们动态更改时读取这些值。

在 iOS 上,仅当您使用 UserDefaults.standard 时,plist 文件才会放置在 Apple 的“设置”应用可访问和管理的位置。在适当的时候读/写默认值仍然是你的责任。不确定这在 MacOS 上是如何工作的。

如果它们在应用启动时被重置,很可能是应用在启动时明确覆盖它们。