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
相关产品推荐
相关产品推荐

