Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/109.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios userDefaults.registerDefaults是否更改为Swift 2?_Ios_Nsuserdefaults_Swift2 - Fatal编程技术网

Ios userDefaults.registerDefaults是否更改为Swift 2?

Ios userDefaults.registerDefaults是否更改为Swift 2?,ios,nsuserdefaults,swift2,Ios,Nsuserdefaults,Swift2,下面是我用来保存高分的完整代码: 在游戏场景中: func atGameOver() { var defaults = NSUserDefaults() var highscore = defaults.integerForKey("highscore") if (score > highscore){ defaults.setInteger(score, forKey: "highscore") }

下面是我用来保存高分的完整代码:

在游戏场景中:

func atGameOver() {
     var defaults = NSUserDefaults()
            var highscore = defaults.integerForKey("highscore")
            if (score > highscore){
                defaults.setInteger(score, forKey: "highscore") }
            var showHighScore = defaults.integerForKey("highscore")
            let userDefaults = NSUserDefaults.standardUserDefaults()
            var totalScore = userDefaults.integerForKey("totalScoreKey")
            totalScore += self.score
            userDefaults.setInteger(totalScore, forKey: "totalScoreKey") 
    }
在应用程序代理中:

var totalScoreKey: Int = 0
 override init() {
        let userDefaults = NSUserDefaults.standardUserDefaults()
        let defaultValues = [totalScoreKey: 0]
        userDefaults.registerDefaults(defaultValues) }
由于使用Swift 2和xCode 7,我遇到了以下错误:

无法将“[Int:Int]”类型的值转换为预期的参数类型“[String:AnyObject]”

它位于userDefaults.RegisterDefaultsDefaultsDefaultValues行上。它是否适用于Swift 1.2非法,并且该应用程序已发布,我如何将其更改为Swift 2?

问题是totalScoreKey是一个整数。这是非法的。如果你在Swift 1.2中这样做,那就不是借口;这仍然是错误的,现在发生的是你被抓了出来

NSUserDefaults的键必须是字符串。重写这一行:

var totalScoreKey: Int = 0
因此:

var totalScoreKey: String = "totalScoreKey"
这样,密钥将与您在此处使用的密钥匹配:

var totalScore = userDefaults.integerForKey("totalScoreKey")
您试图在此处传递的0必须是值,而不是键;你已经通过了:

let defaultValues = [totalScoreKey: 0]
                                    ^ -- this is the zero value