如何在swift中立即进行高分更新

时间:2015-07-30 23:54:52

标签: ios xcode swift

目前我正在开发一个游戏项目而且我遇到了一个问题,即除非我退出应用程序(完全关闭)并再次运行游戏,否则游戏的高分不会更新。在代码方面我写下了这个。

var data = NSUserDefaults.standardUserDefaults()
//this is when the level is over and the highscore is saved
if score > level1HS{
    data.setInteger(score, forKey: "level1HS")
        data.synchronize()
    }

//and this is in the main menu where the highscore is shown
level1text.text = "\(String(level1HS))"

我也尝试用此level1text.text = "\(String(level1HS)"

替换level1text.text = "\(level1HS)"

有人可以帮我找到一种方法让游戏一旦实现就能更新高分吗?谢谢!

2 个答案:

答案 0 :(得分:0)

无论您何时尝试更新高分,您都需要收听StandardUserDefaults()更新时间的通知。它看起来像这样:

let defaults = NSUserDefaults.standardUserDefaults()

let center = NSNotificationCenter.defaultCenter()
center.addObserverForName(NSUserDefaultsDidChangeNotification, object: nil, queue: nil) { (notification) -> Void in
let newScore = defaults.objectForKey("level1HS")
}

答案 1 :(得分:0)

您是否尝试过以下操作?

var level1HS = 10
NSUserDefaults.standardUserDefaults().setObject(highestScore, forKey:"level1HS")
NSUserDefaults.standardUserDefaults().synchronize()

您的问题可能是您没有使用.synchronize()方法。 另外,看看这个问题: SpriteKit High Score