1
这是我与总得分视图控制器上的代码:Swift中的NSUserDefaults不会像我目前的代码那样保存我的数据。我的问题是什么?
import UIKit
var playerName = ""
var totalScore = 0
var bestPlayer = "Taipan"
var highScore = 100
var myNumber: NSInteger = highScore
var myName: NSString = bestPlayer
class StartVC: UIViewController, UITextFieldDelegate {
override func viewDidLoad() {
super.viewDidLoad()
}
@IBOutlet weak var lblPlayerName: UILabel!
@IBOutlet weak var lblNameScore: UILabel!
@IBOutlet weak var txtPlayerName: UITextField!
@IBAction func btnPlay(sender: UIButton) {
if txtPlayerName.text == "" {
lblPlayerName.text = "Please enter your name!"
} else {
playerName = txtPlayerName.text
performSegueWithIdentifier("StartingStatsVC", sender: self)
}
}
func textFieldShouldReturn(textField: UITextField) -> Bool {
txtPlayerName.resignFirstResponder()
return true
}
override func touchesBegan(touches: NSSet, withEvent event: UIEvent) {
self.view.endEditing(true)
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
override func viewWillAppear(animated: Bool) {
NSUserDefaults.standardUserDefaults().setObject(myNumber, forKey: "fixedHighScore")
NSUserDefaults.standardUserDefaults().setObject(myName, forKey: "fixedPlayerName")
NSUserDefaults.standardUserDefaults().synchronize()
var myscore: AnyObject? = NSUserDefaults.standardUserDefaults().objectForKey("fixedHighScore")
var myplayer: AnyObject? = NSUserDefaults.standardUserDefaults().objectForKey("fixedPlayerName")
NSUserDefaults.standardUserDefaults().synchronize()
lblNameScore.text = String(myplayer as NSString) + ": " + String(myscore as NSInteger)
}
}
这是在不同的视图控制器的代码,其将取代的高分和bestplayer如果分数大于总高:
if totalScore > Int(myNumber as NSNumber) {
myNumber = totalScore
myName = playerName
}
一切工作,除了保存高分和bestplayer这是使用NSUserDefaults的全部点。请让我知道该更改什么,以便在应用程序关闭后再正确保存时正确保存。
非常感谢你,最后一个问题。 (我对此很新,所以我很抱歉,如果看起来我在浪费你的时间,我只是在最后一个小时排除理论故障)。如何将新值添加到其他控制器的用户默认值? – 2014-11-20 21:31:07
@EthanScottMiller,我已经更新了我的答案,告诉你如何。如果您还需要从另一个控制器更新myNumber和myName,则需要获取对第一个控制器的引用,或使用协议将新值发回(但这是另一个问题的主题)。 – rdelmar 2014-11-20 21:38:37