我试图制作一个小游戏,现在我希望能够看到游戏的高分。在第一个UIViewController
(viewcontroller1),您可以看到得分(UILabel
称为myScore),得分正在使用(var score: String!
)。该分数已连接到另一个名为recentScore的标签UIViewController
(viewcontroller2)使用
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")
在上面一行中,它表示预期声明。
感谢您的帮助!
答案 0 :(得分:3)
您收到此错误是因为您将代码放在类中的错误位置,因此请将其移至任何函数或viewDidLoad
方法。
您只能在类范围内声明,而不能执行要执行的表达式。
它会正常工作。
修改强>
在您的第二个UIViewController
中,只需从NSUserDefaults
以这种方式阅读highScore:
let hScore = NSUserDefaults.standardUserDefaults().objectForKey("Highscore") as! String
highSchoreLabel.text = hScore