Expected declaration error for making high score

2019-01-15 23:05发布

I'm trying to make a little game, now I want to make it possible to see the high score of the game. At the first UIViewController (viewcontroller1) you can see the score (UILabel called ourScore) and the score is working with (var score: String!). The score has been connected to a label called recentScore at the other UIViewController (viewcontroller2) With the use of

override func prepareForSegue(segue: (UIStoryboardSegue!), sender: AnyObject!) {
        if (segue.identifier == "segueTest") {
            var svc = segue!.destinationViewController as! PointsViewController;
       }
}

the score will connect to the other label at the other UIViewController (2) to see the final score. Now I wanted to make it possible to see also the high score. Currently the high score is with in the code the following on the first UIViewController

let highscore = ourScore.text;
NSUserDefaults.standardUserDefaults().setObject(highscore, forKey: "Highscore")
NSUserDefaults.standardUserDefaults().synchronize()

and at the other UIViewController it is:

highSchore.text = NSUserDefaults.standardUserDefaults().stringForKey("Highscore")

highScore is currently the label in the second UIViewController where the high score should be showing, I got an error at the code

highSchore.text = NSUserDefaults.standardUserDefaults().stringForKey("Highscore")

In the above line, it says Expected declaration.

Thanks for the help!

2条回答
何必那么认真
2楼-- · 2019-01-15 23:16

You are getting this error because you have the code in the wrong place in the class so move it to any function or in viewDidLoad method.

You can have only declarations in class scope, not expressions to be executed.

And it will work fine.

EDIT: In your second UIViewController just read highScore from NSUserDefaults this way:

let hScore = NSUserDefaults.standardUserDefaults().objectForKey("Highscore") as! String
highSchoreLabel.text = hScore
查看更多
太酷不给撩
3楼-- · 2019-01-15 23:17

To be clear for rookies like me, you can get the expected declaration error when you try to use a variable in your ViewController not in a function.

For example this code will give you the expected declaration error.

class ViewController: UIViewController {

    var savedText = ""
    savedText = "this" //<- Expected declaration error

While this code will not give you the error.

class ViewController: UIViewController {

    var savedText = ""

    override func viewDidLoad() {
        super.viewDidLoad()
        savedText = "this" //<- No error here because you used it in a function
查看更多
登录 后发表回答