ユーザーのハイスコアを NSUserDefaults に保存するゲームを Swift で構築していましたが、後でゲームがクラッシュし続けました。NSUserDefaults のハイスコアの読み取りに絞り込んだので、NSUserDefaults で値の保存と読み取りをテストする簡単なアプリを作成しました。ボタンタップで各機能を順番に実行していきます。コードは次のとおりです。
@IBOutlet var valueTextfield: UITextField
@IBOutlet var keyTextfield: UITextField
@IBOutlet var valueLabel: UILabel
@IBAction func saveData(sender: UIButton){
NSUserDefaults.standardUserDefaults().setObject(valueTextfield.text, forKey: keyTextfield.text)
}
@IBAction func forceSynchronise(sender: UIButton){
NSUserDefaults.standardUserDefaults().synchronize()
}
@IBAction func refreshLabel(sender: UIButton){
valueLabel.text = NSUserDefaults.standardUserDefaults().objectForKey(keyTextfield.text) as String
}
最後の関数が実行されると、「致命的なエラー: Optional.None をアンラップできません」という例外がスローされます。最後の行は間違いなく値を返すので、オプションは必要ないと思っていましたが、明らかに間違っています。誰かが私が間違っていることを指摘してもらえますか?
助けてくれてありがとう!