用户可以从应用程序外部编辑 plist 吗?
Can the user edit the plist from outside the app?
我正在使用 UserDefaults 保存一些持久数据(应用程序的状态,而不是需要保护的东西)。此数据(AFAIK)保存在 plist 中。用户可以在应用外编辑这个 plist 吗?
我试过了,虽然看起来可行,但当我 运行 应用程序时,它会用应用程序的最后一个值覆盖更改。
如果不可能,那么 'defaults write ...' 命令(通过终端)有什么用?
这个问题与 iOS 和 macOS
都相关
这取决于您如何使用 UserDefaults。 UserDefaults 实际上只不过是一个字典,它提供了一种方便的方法 read/write 到 plist 文件。您可以自己决定该文件的存储位置,因此用户是否可以在应用程序外部更改它。您负责在启动时读取值,并可能在它们动态变化时读取这些值。
在 iOS 上,仅当您使用 UserDefaults.standard
时,plist 文件才会放置在可由 Apple 的“设置”应用程序访问和管理的位置。在适当的时候 read/write 默认值仍然是你的责任。不确定在 MacOS 上如何工作。
如果它们在应用程序启动时被重置,则应用程序可能会在启动时明确覆盖它们。
我正在使用 UserDefaults 保存一些持久数据(应用程序的状态,而不是需要保护的东西)。此数据(AFAIK)保存在 plist 中。用户可以在应用外编辑这个 plist 吗? 我试过了,虽然看起来可行,但当我 运行 应用程序时,它会用应用程序的最后一个值覆盖更改。 如果不可能,那么 'defaults write ...' 命令(通过终端)有什么用?
这个问题与 iOS 和 macOS
都相关这取决于您如何使用 UserDefaults。 UserDefaults 实际上只不过是一个字典,它提供了一种方便的方法 read/write 到 plist 文件。您可以自己决定该文件的存储位置,因此用户是否可以在应用程序外部更改它。您负责在启动时读取值,并可能在它们动态变化时读取这些值。
在 iOS 上,仅当您使用 UserDefaults.standard
时,plist 文件才会放置在可由 Apple 的“设置”应用程序访问和管理的位置。在适当的时候 read/write 默认值仍然是你的责任。不确定在 MacOS 上如何工作。
如果它们在应用程序启动时被重置,则应用程序可能会在启动时明确覆盖它们。