获得高分的预期声明错误[重复]

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

【讨论】:

以上是关于获得高分的预期声明错误[重复]的主要内容,如果未能解决你的问题,请参考以下文章

在switch语句中声明变量[重复]

预期的声明错误 TableView [关闭]

无法解决预期的声明错误[关闭]

#define 错误:预期的声明说明符或 '...' 在 '(' 标记之前

使用 Swift 的预期声明错误

swift编译器显示预期的声明错误? [复制]