我知道这个问题已被多次询问,但所有情况似乎与我的不同,我没有能力发表评论. 我正在尝试学习如何创建UserDefault变量,但它一直在崩溃.我在日志中得到的错误是: *** Terminating app due
我正在尝试学习如何创建UserDefault变量,但它一直在崩溃.我在日志中得到的错误是:
*** Terminating app due to uncaught exception 'NSUnknownKeyException',
reason: '[<NSUserDefaults 0x1097d6bf8> valueForUndefinedKey:]: this class is
not key value coding-compliant for the key AmountOfCoins.'
以下是我的代码中使用UserDefault的所有时间:
class GameScene: SKScene, SKPhysicsContactDelegate {
var CoinCount = Int()
^我在这里定义了一个变量,以便更容易地访问硬币计数.
override func didMove(to view: SKView) {
if let x = UserDefaults.value(forKey: "AmountOfCoins") as? Int{
CoinCount = x
}
^这用于检查AmountOfCoins是否为空.我想我可能在这里犯了一个错误.
func startGame() {
score = 0
CoinCount = UserDefaults.value(forKey: "AmountOfCoins") as! Int
scoreview.text = "\(score)"
coinview.text = "\(UserDefaults.value(forKey: "AmountOfCoins"))"
}
^这是一个在游戏启动时调用的函数
func addCoin(){
run(SKAction.playSoundFileNamed("Coin.wav", waitForCompletion: false))
CoinCount += 1
UserDefaults.standard.set(CoinCount, forKey: "AmountOfCoins")
scoreview.text = "\(UserDefaults.value(forKey: "AmountOfCoins"))"
coinview.text = "\(CoinCount)"
^最后这里是一个需要添加硬币时调用的函数.
我已经阅读了一些修复此错误的不同方法,但我真的不明白它是如何工作的.
正如人们在上面的评论中所说,它应该是这样的let defaults = UserDefaults.standard defaults.value(forKey: "AmountOfCoins")
代替
UserDefaults.value(forKey: "AmountOfCoins")
