У меня есть изрядное количество кода, который выглядит примерно так ...Swift 3 и UserDefaults
let wantsIgnored = UserDefaults.standard.bool(forKey: "ViewShowIgnoredElements") ?? true
Идея заключалась в том, что если по умолчанию не включает этот ключ, он все равно получит то по умолчанию стоимость. Это работало отлично в Swift 2, но в Swift 3 предупреждает ...
Left side of nil coalescing operator '??' has non-optional type 'Double', so the right side is never used
Таким образом, кажется, что UserDefaults.standard.bool
будет всегда возвращает значение, которое я думаю имеет смысл, если это Bool. Хорошо, но каков наилучший способ решить эту проблему? Я могу проверить каждый ключ с objectForKey
, но это делает код намного более грязным. Или я вообще не мог выполнить эту проверку, и убедитесь, что каждый ключ находится в исходном наборе значений по умолчанию, я думаю.
Я уверен, что я не единственный, кто столкнулся с этим, любые канонические решения?
Это совсем не грязно, мне это очень нравится! –