2017-04-09 5 views
-1

私は以下のコードを持っています。チュートリアルが完了しても何らかの理由でブーリアン変数がtrueになるように設定されているため、偽として私はチュートリアルの価値を印刷することさえできます。そして、直前の行が値をtrueに設定している行であっても、falseとして出力されます。なぜこれをやっているのですか?SwiftのUser Defaultsでブール値を設定する方法は?

let tutorial = UserDefaults().bool(forKey: "tutorial") 


if tutorial == false { 
     introSequence() 
} 

if rightIntroButton.contains(location) { 
    UserDefaults().set(true, forKey: "tutorial")              
    //tutorial = true 
    UserDefaults.standard.set(true, forKey: "tutorial") 
    print(tutorial)            
} 
+0

キーを設定した後、 'UserDefaults.standard.synchronize()'を呼び出してみてください。 –

+0

https://developer.apple.com/reference/foundation/nsuserdefaults/1408905-setbool?language=objc – danh

+1

字下げされた字下げは何ですか?ところで、ユーザのデフォルトキー( ''チュートリアル '')を一元管理された変数に抽出するのは、おそらく悪い考えではありません。 – Alexander

答えて

1

私はチュートリアルが完了したが、何らかの理由でされて た後値はfalseとして滞在している真なるように設定ブール変数を持っています。

テアの理由がある:あなたがUserDefaults(UserDefaults())にアクセスするための新しいオブジェクトを作成しているたびに、代わりに、あなたはstandardシングルトンオブジェクトを使用する必要があります

デフォルトオブジェクトを共有返します。

したがって、UserDefaults()UserDefaults.standardに置き換えてください。

+0

私はこれをやってみましたが、UserDefaults()をUserDefaults.standardに変更した後でも、チュートリアル変数はまだfalseとして表示されています。 –

+0

次に、コードをデバッグし、いくつかのブレークポイントを追加し、 'tutorial'の値が編集されたことを確認することをお勧めします。 –

関連する問題