Xcode Swift 4-表达式类型'@左值字符串?';没有更多的上下文,它是模糊的
我试图在我正在做的比赛中记录一个分数和一个高分。但我一直在犯这样的错误: 有什么线索可以帮我解决吗?我有Xcode 10,我正在使用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
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
的名称与增加分数不是同义词。它应该一个接一个地增加分数。