You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Swift中UserDefaults调用set(nil)与removeObject的区别是什么

核心差异

实际上UserDefaults.standard.set(nil, forKey: "token")的底层就是调用了removeObject(forKey:),绝大多数场景下两者执行后的效果完全一致,后续读取对应key的值都会返回nil。

适用场景

  • 选择set(nil, forKey:)的情况:
    适合你有统一赋值逻辑的场景,比如要把一个可选类型的变量同步到UserDefaults时,不需要额外做空判断,可以直接复用同一个set方法:
    比如你可以直接写UserDefaults.standard.set(currentToken, forKey: "token"),不管currentToken是有有效值还是nil,一行代码就能完成赋值或者清空操作,不用额外写分支区分调用不同的方法,简化代码逻辑。
  • 选择removeObject(forKey:)的情况:
    适合你明确要执行删除存储项的场景,用这个方法语义更明确,其他读代码的人一眼就能看出来你是主动要删掉这个key的存储数据,而不是不小心传了空值导致的意外清空。

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 13:39:01