当前位置:  开发笔记 > 编程语言 > 正文

此类不是与键兼容的键值

如何解决《此类不是与键兼容的键值》经验,为你挑选了1个好方法。

我知道这个问题已经问过很多次了,但是所有情况似乎都与我不同,我没有能力发表评论。

我正在尝试学习如何制作UserDefault变量,但是它一直崩溃。我在日志中得到的错误是:

*** Terminating app due to uncaught exception 'NSUnknownKeyException',
    reason: '[ 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)"

^最后,这是一个需要添加硬币时调用的函数。

我已经阅读了几种解决此错误的方法,但我真的不明白它的工作原理。



1> Mistah_Sheep..:

正如人们在上面的评论中所说,应该是这样的

let defaults = UserDefaults.standard
defaults.value(forKey: "AmountOfCoins")

代替

UserDefaults.value(forKey: "AmountOfCoins")

推荐阅读
小色米虫_524
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有