我正在努力做一个小游戏,现在我想让它有可能看到比赛的高分。在第一个UIViewController
(viewcontroller1)中,您可以看到得分(UILabel
称为ourScore),而得分正在使用(var score: String!
)。得分已连接到另一个UIViewController
(viewcontroller2)上的一个名为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")
在上面的一行中,它说期望声明。
谢谢你的帮助!
发布于 2015-08-07 00:29:54
您会得到这个错误,因为您的代码位于类中的错误位置,所以将其移到任何函数或viewDidLoad
方法中。
只能在类作用域中有声明,不能执行表达式。
一切都会好起来的。
编辑:在您的第二个UIViewController
中只是这样从NSUserDefaults
读取highScore:
let hScore = NSUserDefaults.standardUserDefaults().objectForKey("Highscore") as! String
highSchoreLabel.text = hScore
发布于 2018-02-26 22:24:41
为了明确像我这样的新手,当您尝试在函数中使用ViewController 而不是中的变量时,您可以得到预期的声明错误。
例如,这段代码将给出预期的声明错误。
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
https://stackoverflow.com/questions/31872657
复制