Xcode Swift 4-表达式类型'@左值字符串?';没有更多的上下文,它是模糊的

Xcode Swift 4-表达式类型'@左值字符串?';没有更多的上下文,它是模糊的,xcode,swift4,Xcode,Swift4,我试图在我正在做的比赛中记录一个分数和一个高分。但我一直在犯这样的错误: 有什么线索可以帮我解决吗?我有Xcode 10,我正在使用Swift 4。提前谢谢 import UIKit import Foundation class ScoreVC: UIViewController { @IBOutlet weak var scoreLabel: UILabel! @IBOutlet weak var highscoreLabel: UILabel! @IBOutl

我试图在我正在做的比赛中记录一个分数和一个高分。但我一直在犯这样的错误:

有什么线索可以帮我解决吗?我有Xcode 10,我正在使用Swift 4。提前谢谢

import UIKit
import Foundation

class ScoreVC: UIViewController {
    @IBOutlet weak var scoreLabel: UILabel!
    @IBOutlet weak var highscoreLabel: UILabel!

    @IBOutlet weak var reset: UIButton!
    @IBOutlet weak var points: UIButton!

    var Score = 0
    var Highscore = 0

    override func viewDidLoad() {
        super.viewDidLoad()

        let HighscoreDefault = UserDefaults.standard

        if (HighscoreDefault.value(forKey: "Highscore") != nil) {
            Highscore = HighscoreDefault.value(forKey: "Highscore") as! Int
            highscoreLabel.text = NSString(format: "Highscore: %i", Highscore) as String
        }
    }

    @IBAction func resetButton(_ sender: Any) {
        Score = 0
        scoreLabel.text = NSString(format: "Score: %i", Score) as String
    }

    @IBAction func pointsButton(_ sender: Any) {
        Score +=
        scoreLabel.text = NSString(format: "Score: %i", Score) as String
        if (Score > Highscore) {
            Highscore = Score
            highscoreLabel.text = NSString(format: "Highscore: %i", Highscore) as String

            var HighscoreDefault = UserDefaults.standard
            HighscoreDefault.setValue(Highscore, forKey: "Highscore")
            HighscoreDefault.synchronize()
        }
    }
}

点按钮编辑此行:

Score += 1
至于错误信息

scoreLabel.text = NSString(format: "Score: %i", Score) as String

此处
scoreLabel.text
是一个左值,因为它存在于赋值运算符
=
的左侧。在前一行中,在原始代码中,
Score+=
需要一个右值,赋值操作不能被视为右值。

点按钮编辑此行:

Score += 1
至于错误信息

scoreLabel.text = NSString(format: "Score: %i", Score) as String

此处
scoreLabel.text
是一个左值,因为它存在于赋值运算符
=
的左侧。在前一行中,在原始代码中,
Score+=
预期为右值,分配操作不能被视为右值。

从pointsButton编辑此行:

guard let scoreLabel = scoreLabel.text else {
    return
}

从pointsButton编辑此行:

guard let scoreLabel = scoreLabel.text else {
    return
}

在它上面的一行,您有
分数+=
。这应该做什么?同样,你也不必这么做,但我强烈建议你在变量名开始时使用小写字母,而不是大写字母。分数+=将分数的相同值相加。基本上就像分数+分数。顺便说一句,我刚刚提出了这个问题。许多其他问题与当前问题无关:1。不要使用
NSString
<代码>字符串
也支持格式化。使用
scoreLabel.text=String(格式:“分数:%i”,分数)
或只使用
scoreLabel.text=“分数:\(分数)”
。2.不要将
value(forKey:)
setValue(\uquo:forKey:)
UserDefaults
一起使用。这些是用于键值编码的。使用
UserDefaults
文档中列出的方法。3.不要调用
同步
。它已经过时了。请参阅文档。4.变量和函数名应以小写字母开头。类名以大写字母开头。图片和截图可以很好地添加到帖子中,但请确保没有它们的帖子仍然是有用的。如果您发布代码或错误消息的图像,请确保您也直接将实际代码/消息复制粘贴或键入到帖子中。在帖子上方的行中,您有
分数+=
。这应该做什么?同样,你也不必这么做,但我强烈建议你在变量名开始时使用小写字母,而不是大写字母。分数+=将分数的相同值相加。基本上就像分数+分数。顺便说一句,我刚刚提出了这个问题。许多其他问题与当前问题无关:1。不要使用
NSString
<代码>字符串
也支持格式化。使用
scoreLabel.text=String(格式:“分数:%i”,分数)
或只使用
scoreLabel.text=“分数:\(分数)”
。2.不要将
value(forKey:)
setValue(\uquo:forKey:)
UserDefaults
一起使用。这些是用于键值编码的。使用
UserDefaults
文档中列出的方法。3.不要调用
同步
。它已经过时了。请参阅文档。4.变量和函数名应以小写字母开头。类名以大写字母开头。图片和截图可以很好地添加到帖子中,但请确保没有它们的帖子仍然是有用的。如果您发布代码或错误消息的图像,请确保您也将实际的代码/消息复制粘贴或直接键入到文章中。这可能是为了增加分数而假定的
Score+=1
。@rmaddy可能是,我不想做任何假设,因为函数名
pointsButton
与增加分数不是同义词。它应该一个接一个地增加分数。可能这应该是
score+=1
来增加分数。@rmaddy可能是的,我不想做任何假设,因为函数
pointsButton
的名称与增加分数不是同义词。它应该一个接一个地增加分数。