ユーザーがボタンをクリックしたかどうかを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]
をフェッチ中
'self.defaults.objectForKey(" pressedButtons ")'が印刷するのを見てみましたか? –
はい、これまでのところ、オプション({583201282b9b12326fe2fee5 = 1;}) 'というレコードが1つしかありませんでしたが、' self.defaults.objectForKey( "pressedButtons")に入れたIDに関係なく、 currentButtonId] ' – user3766930
@ user3766930あなたはちょうど答えとして投稿したものを試すことができます –