我的代碼看起來像這樣有相當數量...斯威夫特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
來檢查每個密鑰,但這會使代碼更加混亂。或者我根本無法做這個檢查,並且確保每個按鍵都在最初的一組默認值中,我猜想是手動的。
我確定我不是唯一一個遇到過這個問題,任何規範的解決方案?
這根本不亂,我非常喜歡它! –