获得高分的预期声明错误[重复]
Posted
技术标签:
【中文标题】获得高分的预期声明错误[重复]【英文标题】:Expected declaration error for making high score [duplicate] 【发布时间】:2015-08-07 08:07:39 【问题描述】:我正在尝试制作一个小游戏,现在我想让看到游戏的高分成为可能。在第一个UIViewController
(viewcontroller1) 你可以看到分数(UILabel
称为ourScore)并且分数正在使用(var score: String!
)。分数已经在另一个UIViewController
(viewcontroller2) 处连接了一个名为recentScore 的标签,使用
override func prepareForSegue(segue: (UIStoryboardSegue!), sender: AnyObject!)
if (segue.identifier == "segueTest")
var svc = segue!.destinationViewController as! PointsViewController;
分数将连接到另一个标签UIViewController
(2) 以查看最终分数。现在我想让它也可以看到高分。目前高分是在代码下面的第一个UIViewController
let highscore = ourScore.text;
NSUserDefaults.standardUserDefaults().setObject(highscore, forKey: "Highscore")
NSUserDefaults.standardUserDefaults().synchronize()
另一个UIViewController
是:
highSchore.text = NSUserDefaults.standardUserDefaults().stringForKey("Highscore")
highScore 目前是第二个UIViewController
中应该显示高分的标签,我在代码中遇到错误
highSchore.text = NSUserDefaults.standardUserDefaults().stringForKey("Highscore")
在上面一行中,它说预期声明。
感谢您的帮助!
【问题讨论】:
【参考方案1】:您收到此错误是因为您将代码放在类中的错误位置,因此请将其移至任何函数或 viewDidLoad
方法中。
类范围内只能有声明,不能执行表达式。
它会正常工作的。
编辑:
在您的第二个 UIViewController
中,只需通过这种方式从 NSUserDefaults
读取 highScore:
let hScore = NSUserDefaults.standardUserDefaults().objectForKey("Highscore") as! String
highSchoreLabel.text = hScore
【讨论】:
谢谢,我没有再收到任何错误。但我认为我在命名标签时有问题,通过 let highscore = ourScore.text; ourScore 是在第一个 UIViewController 处计算点数的标签,这样好吗?并通过 highScore.text = NSUserDefaults... highScore 是另一个标签中带有高分的标签,这也不错吗?原因是应用程序中的高分保持为零,就像故事板中的标签所说的那样。 看起来只有一个问题:highScore.text = highScore 给出错误:“'String' 没有名为 'text' 的成员 谢谢,但我认为这不是答案,因为错误给出了 .text 的错误,所以不是 highScore。这是一个标签 欢迎提出更详细的问题..:) 所以我把它改成了 highScore.text = highscore 它没有错误。但是当我启动应用程序时,高分保持在 0。高分的标签是 highScore,在代码中是:@IBOutlet var highScore: UILabel!【参考方案2】:对于像我这样的新手来说,当您尝试在函数中使用 ViewController not 中的变量时,可能会出现预期的声明错误。
例如,此代码会给您预期的声明错误。
class ViewController: UIViewController
var savedText = ""
savedText = "this" //<- Expected declaration error
虽然此代码不会给您错误。
class ViewController: UIViewController
var savedText = ""
override func viewDidLoad()
super.viewDidLoad()
savedText = "this" //<- No error here because you used it in a function
【讨论】:
以上是关于获得高分的预期声明错误[重复]的主要内容,如果未能解决你的问题,请参考以下文章