Asperi 说得对,这只是一个简单的意见,由您决定。
以下是我注意到的关于 macOS 中的持久性的一些事情。
UserDefaults(@AppStorage 在后台使用)允许您存储简单类型和 Data(理论上可以表示任何类型)。
UserDefaults 会自动写入位于以下位置的属性列表中:
~/Library/Preferences/<yourbundleid>.plist
如果您的应用被沙盒化,它将位于:
~/Library/Containers/<Your Container>/Library/Preferences/<yourbundleid>.plist
如果您使用自定义方法保存配置/首选项,大多数开发人员会将此类数据存储在内部:
~/Library/Application Support/Your App/
我鼓励您不要将配置存储在他们的主目录中,除非出于某种特殊原因您绝对需要它。它会使您的应用更难卸载,并且会使它们的主文件夹变得混乱!
UserDefaults 与自定义配置?
再一次,只是我的意见,但这是我通常遵循的规则:
哪个更容易?
我通常发现自己使用 UserDefaults 来获得上下文偏好,例如对话框上典型的“不要再打扰我”复选框。
我也经常使用它来记住状态(@AppStorage 变得非常棒)。附带说明一下,UserDefaults 会自动读取首选项并将其写入磁盘,这反过来意味着更少的代码。
当首选项在视图/vc 代码之外进行管理时,或者当我的配置结构相当复杂时,我确实发现自己偶尔会使用自定义配置。如果我必须完成将 structs 反序列化/重新序列化为 Data 以存储在 UserDefaults 中的工作,我不妨将它们存储并自己管理。
尺寸问题
我一直听说在 UserDefaults 中存储大量首选项是“不好的”。虽然 UserDefaults 肯定能够存储您在问题中提到的 4KB,但在某些情况下您需要使用替代方案。我发现以下SO thread 对这个主题很有启发。