UserDefaults使用的一些“坑”
个人理解,有错误欢迎评论指正,感谢🙏
项目场景:
iOS 主进程与extension进程通信,并且需要主进程可以实时监听到状态变化
UserDefaults是线程安全的
问题1: 初始化程序组对应UserDefaults失败
原因分析:
group ID未创建成功
问题2:没有记录数据的时候,读取值为0 or false,导致配置使用时错误
原因分析:
UserDefaults在获取时,对于没有设置内容的key,会返回一个对应类型的默认值(非nil,虽然感觉返回nil对于使用者来说更加舒适=.= ),比如bool返回false,int返回0,所以对于UserDefaults的取值,建议避开这个默认值(真避不开,比如bool的这种,就要考虑默认的场景对应配置置为false)