默认值太复杂,无法使用基本的“+”运算符进行编译

Defaults too complex to compile with basic '+' operator

func updateTotalScore() -> Int {
        var totalScoreDefault = NSUserDefaults.standardUserDefaults()

        var highScoreAB1 = defaults.integerForKey("highScoreAB1")

        var highScoreAB2 = defaults.integerForKey("highScoreAB2")

        var highScoreAB3 = defaults.integerForKey("highScoreAB3")

        var highScoreAB4 = defaults.integerForKey("highScoreAB4")
        var highScoreAB5 = defaults.integerForKey("HighScoreAB5")
        var highScoreAB6 = defaults.integerForKey("highScoreAB6")
        var highScoreAB7 = defaults.integerForKey("highScoreAB7")
    totalScoreDefault =
      (defaults.integerForKey("highScoreAB1") + defaults.integerForKey("highScoreAB2")) + (defaults.integerForKey("highScoreAB3") +   defaults.integerForKey("highScoreAB4")) + (defaults.integerForKey("highScoreAB5") + defaults.integerForKey("highScoreAB6")) + defaults.integerForKey("highScoreAB7") }

添加多个键以获得总分默认会抛出以下错误。我尝试将它们分组成对,但这没有用。先感谢您。这是昨天 post 的延续。

您似乎在尝试将所有高分相加到一个名为 totalScoreDefault 的 UserDefault 中。如果是这样,您需要像这样设置 totalScoreDefault:

default.setInteger(highScoreAB1 + ... + highScoreAB7, forKey: "totalScoreDefault")

// You can also consider adding all highScores up before 
// this to make the setInteger portion look cleaner.

var totalScore = 0
for var i = 1; i < 8; i++ {
    totalScore += defaults.integerForKey("highScoreAB\(i)")
}
defaults.setInteger(totalScore, forKey: "totalScoreDefault")

作为对 Logan 答案的补充,因为您说的是 "complex expression" 编译器错误问题。这应该编译:

func updateTotalScore() -> Int {

           let defaults = NSUserDefaults.standardUserDefaults()

           let totalScoretDefault =
                 defaults.integerForKey("highScoreAB1") +
                 defaults.integerForKey("highScoreAB2") +
                 defaults.integerForKey("highScoreAB3") +
                 defaults.integerForKey("highScoreAB4") +
                 defaults.integerForKey("highScoreAB5") +
                 defaults.integerForKey("highScoreAB6") +
                 defaults.integerForKey("highScoreAB7")

           return totalScoretDefault

}