2016-12-02 10 views
1

私は次のようになり、コードのかなりの量を持っている...スウィフト3とUserDefaults

let wantsIgnored = UserDefaults.standard.bool(forKey: "ViewShowIgnoredElements") ?? true 

アイデアは、デフォルトはそのキーが含まれていなかった場合、それはまだ合理的なデフォルトになるだろうということでした値。これはスウィフト2 に罰金働いたが、でスウィフト3それはそう、UserDefaults.standard.bool常に私はそれがブールだ場合は理にかなって推測され、値を返すうと思われ...

Left side of nil coalescing operator '??' has non-optional type 'Double', so the right side is never used 

を警告しています。いいですが、この問題を解決する最善の方法は何ですか?私はobjectForKeyですべての鍵を調べることができますが、それはコードをもっと厄介にします。あるいは、私はこのチェックを一切行うことができず、全ての鍵がデフォルトの初期セットに入っていることを確かめてください。

私はこれに直面した唯一の人ではないと確信しています。

答えて

2

私はあなたが厄介としてこれを思うだろう怖いんだけど、あなたはこのような何か書くことができます。

let wantsIgnored = UserDefaults.standard.object(forKey: "ViewShowIgnoredElements") as? Bool ?? true 

てみてくださいを。

+0

それは全く面倒ではありません、私は本当にそれが好きです! –

0

は、それはすべきではない:

let wantsIgnored = UserDefaults.standard.set(true, forKey: "ViewShowIgnoredElements") 

そして、それを変更する:

UserDefaults.standard.set(false, forKey: "ViewShowIgnoredElements") 

そして、それを呼び出す:

let xxxx = UserDefaults.standard.bool(forKey: "ViewShowIgnoredElements") 

か:

func boolTest (_myBool: Bool){ 
    if _myBool{ 
     //do something 
    } 
} 

//and call that function 
boolTest(_myBool: UserDefault.standard.bool(forKey: "ViewShowIgnoredElements"))