【发布时间】:2021-01-06 14:53:22
【问题描述】:
我正在使用 UserDefaults 来保存一些持久性数据(应用程序的状态,而不是需要保护的东西)。此数据 (AFAIK) 保存在 plist 中。用户可以在应用程序之外编辑此 plist 吗? 我试过了,虽然看起来可能,但当我运行应用程序时,它会用应用程序中的最后一个值覆盖更改。 如果不可能,那么“defaults write ...”命令(通过终端)有什么用?
这个问题与 iOS 和 macOS 都有关
【问题讨论】:
我正在使用 UserDefaults 来保存一些持久性数据(应用程序的状态,而不是需要保护的东西)。此数据 (AFAIK) 保存在 plist 中。用户可以在应用程序之外编辑此 plist 吗? 我试过了,虽然看起来可能,但当我运行应用程序时,它会用应用程序中的最后一个值覆盖更改。 如果不可能,那么“defaults write ...”命令(通过终端)有什么用?
这个问题与 iOS 和 macOS 都有关
【问题讨论】:
这取决于您如何使用 UserDefaults。 UserDefaults 实际上只不过是一个字典,它可以方便地读取/写入 plist 文件。您可以自行决定该文件的存储位置,从而决定它是否可以由应用程序外的用户更改。您负责在启动时读取值,并可能在它们动态更改时读取它们。
在 iOS 上,仅当您使用 UserDefaults.standard 时,plist 文件才会放置在 Apple 的“设置”应用可访问和管理的位置。在适当的时候读取/写入默认值仍然是您的责任。不确定这在 MacOS 上是如何工作的。
如果它们在应用启动时被重置,很可能是应用在启动时显式覆盖它们。
【讨论】: