2016-10-15 4 views
1

ユーザーがボタンをクリックしたかどうかをNSUserDefaultsに保存したい。 私は2つのボタンを持っていますが、1つは+1値、もう1つは-1です。nsdictionaryのオブジェクトがnilで、私が間違った応答を得ているかどうかチェックしています - なぜですか?

ユーザーは、これらの二つのボタンのいずれかを押すと、私はこれやってる:vote上記のコードで

if (self.defaults.objectForKey("pressedButtons") == nil){ 
    let currentButtonId:[String:String] = [self.pressedButtons:vote] 
    self.defaults.setObject(currentButtonId, forKey: "pressedButtons") 
    self.defaults.synchronize() 
} else { 
    var pressedButtons:[String:String] = self.defaults.objectForKey("pressedButtons") as! [String:String] 
    pressedButtons[self.button_id] = vote 
    self.defaults.setObject(pressedButtons, forKey: "pressedButtons") 
    self.defaults.synchronize() 
} 

する"1"または"-1"のいずれかになります文字列値です。

ユーザーがパネルに戻ったとき、私は彼が既にボタンを押したかどうかをチェックしています。これは私がそれをチェックする方法です:

if (self.defaults.objectForKey("pressedButtons") != nil){ 

    if (self.defaults.objectForKey("pressedButtons")![currentButtonId] != nil) { 
     print("user already pressed") 
     print(self.defaults.objectForKey("pressedButtons")![currentButtonId]) 
    } else { 
     print("USER didn't press the button yet") 
    } 
} else { 
    print("USER didn't press the button yet for sure") 
} 

私はいつも見出力は次のようになります。この行以降

user already pressed 
nil 

print(self.defaults.objectForKey("pressedButtons")![currentButtonId]) 

プリントnil、なぜ私はメッセージを見ていていますユーザーがボタンを押した?

let variable = self.defaults.objectForKey("pressedButtons") as! [String:String] 

をフェッチ中

+0

'self.defaults.objectForKey(" pressedButtons ")'が印刷するのを見てみましたか? –

+0

はい、これまでのところ、オプション({583201282b9b12326fe2fee5 = 1;}) 'というレコードが1つしかありませんでしたが、' self.defaults.objectForKey( "pressedButtons")に入れたIDに関係なく、 currentButtonId] ' – user3766930

+0

@ user3766930あなたはちょうど答えとして投稿したものを試すことができます –

答えて

1

[String:String]

今すぐ応じ

これはself.defaults.objectForKey("pressedButtons")であることを知らないあなたの価値をフェッチさて、これは型の変数があり、常に[String:String]として型変換このオブジェクトを取りますタイプ[String:String]のオブジェクトです。したがって、最初にタイプキャストしてから使用してください。だからself.defaults.objectForKey("pressedButtons")![currentButtonId]はゼロと思われる

+0

@Rajan、ありがとう、あなたは変数としてそれを保存するのが正しかった、今は動作します! – user3766930

関連する問題