我的代码看起来像这样有相当数量...斯威夫特3个UserDefaults
let wantsIgnored = UserDefaults.standard.bool(forKey: "ViewShowIgnoredElements") ?? true
当时的想法是,如果违约不包括那把钥匙,它仍然会得到合理的默认值。这工作得很好斯威夫特2,但在斯威夫特3它警告...
Left side of nil coalescing operator '??' has non-optional type 'Double', so the right side is never used
如此看来,UserDefaults.standard.bool
将总是返回一个值,我的猜测是有道理的,如果它是一个布尔值。好的,但是解决这个问题的最好方法是什么?我可以使用objectForKey
来检查每个密钥,但这会使代码更加混乱。或者我根本无法做这个检查,并且确保每个按键都在最初的一组默认值中,我猜想是手动的。
我确定我不是唯一一个遇到过这个问题,任何规范的解决方案?
这根本不乱,我非常喜欢它! –