You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

iOS 13/14删除应用时UserDefaults是否清除及iCloud恢复问题

iOS 13/14 中 UserDefaults 删除与重装的行为详解

我来帮你逐一拆解这些关于 UserDefaults 的疑问,都是日常开发中很容易混淆的点:

1. 删除应用时,本地 UserDefaults 是否会被清除?

当你**直接删除应用(而非移入 App 资源库)**时,iOS 13 和 14 都会彻底清除该应用的所有本地数据,包括存储在 UserDefaults 里的内容。这个行为在两个系统版本里完全一致,没有差异。

如果只是把应用移入 App 资源库,那 UserDefaults 数据会继续保留,因为资源库只是隐藏应用,并未真正删除。

2. 纯 UserDefaults 是否会通过 iCloud 留存并在重装时恢复?

这里要区分「iCloud 整机备份」和「iCloud 数据同步」两个概念:

  • UserDefaults 本身没有内置的 iCloud 同步功能(那是 NSUbiquitousKeyValueStore 的作用,你已经明确说不用这个),它只会被包含在iCloud 整机备份中。
  • 当用户删除应用后直接从 App Store 重装,默认情况下 iOS 不会自动从 iCloud 备份恢复该应用的 UserDefaults 数据——只有当用户主动选择「从 iCloud 备份恢复整机」,或者在应用重装时手动选择恢复该应用的备份数据,才会把旧的 UserDefaults 拉回来。
  • 如果你希望用户删除应用后重装能「从零开始」,其实不需要额外操作:只要用户是直接删除应用(非资源库),本地数据就会被清掉;而 iCloud 备份里的旧数据,不会自动同步到新安装的应用里,除非用户主动触发恢复操作。

iOS 13 与 14 的差异?

在这个问题上,iOS 13 和 14 没有任何行为差异,上述规则在两个版本里都适用。

额外补充:如果用户想要彻底清除 iCloud 备份里的该应用数据,需要前往「设置 → [你的名字] → iCloud → 管理存储空间 → 备份 → 选择对应设备 → 显示所有应用」,找到该应用并关闭备份开关,这样后续的 iCloud 备份就不会包含它的 UserDefaults 数据了。

内容的提问来源于stack exchange,提问作者Raphael

火山引擎 最新活动