我正在尝试制作一个高分变量,该变量可以保存并等于分,再加上一个大于或等于高分的分数。每当游戏从NSUserDefaults开始时,我都需要提取这些数据,我想在视图中全部完成。
我已经习惯于使用其他语言,并且我有以下代码可以开始:
func newHighscore(_ duck: DuckView){
if score >= highscore{
return highscore = score + 1
}
lblHighscore.text = "HIGHSCORE: \(highscore)"
}
高分,更不用说任何分数都没有打印在标签上,我不知道为什么。
请原谅我的初学者错误。
答案 0 :(得分:0)
所以,我不确定这是否是您要寻找的东西,但是我相信这就是您要寻找的东西:
let score = 10
var highscore = 10
if score >= highscore {
highscore = score + 1
}
print(highscore)
如您所见,此行存在一些问题:
let highscore == score++1
如果您要递增的变量highscore
是全局变量,则不能使用相同的名称说“ let highscore ...”。
另外,==
仅用于比较,您不能同时进行比较和分配。
最后还有++1
的东西,在Swift中已经没有++
。
答案 1 :(得分:0)
好吧,如果我理解这一权利,那么您想设计一种方法,如果高分小于或等于该分数,则可以将高分(分数+ 1)保存到用户默认值。
首先,在Swift中,将一个变量添加到变量中(假设该变量是数字类型),只需执行variable + 1
。就这么简单。
现在看来,此情况下的其余代码也足够好。 (除了重复的高分变量之外)为用户默认值。
如果您不记得或不真正了解用户默认设置,这里是快速的初学者回顾。 用户默认值是一个您可以在其中存储专用于应用程序和设备本地的基本数据类型(字符串,整数,数组等)的地方。这意味着您可以在用户默认值中保存一个值,终止该应用程序,然后再次进入,数据仍将存储在某个键下的用户默认值中。 用户默认值键是一个短字符串,用于标识数据的存储位置。假设您创建一个数组,并将其存储在键“ myArray”下。如果您在其他时间再次访问它,则会在键“ myArray”下查找该数组。
在代码中应用用户默认设置非常简单。
首先,您需要创建一个User Defaults标准对象。
let defaults = UserDefaults.standard
这将创建一个用户默认值对象,您可以从中保存和访问数据。
接下来,您实际上将数据保存在highScore
键下。
defaults.set(highscore, forKey: "highScore")
仅此而已即可保存您的核心信息。 要访问它,只需使用以下代码:
let defaults = UserDefaults.standard
if defaults.integer(forKey: "highScore") != 0 {
let newHighScore = defaults.integer(forKey: "highScore")
//There is a value stored, and it is now in the varible newHighScore
lblHighscore.text = "Pigs: \(newHighScore)"
} else {
//There is no high score stored yet
}
我们在这里正在创建UserDefaults
(默认值)的实例,检查是否为键“ highScore”存储了整数(如果没有,则“用户默认值”将为您提供0 ),并将其设置为一个变量,然后您就可以使用该变量执行所需的任何操作。
希望这对您有所帮助。
不过,不过,我看到您在DuckView
类型的函数中有一个名为duck的参数。如果您不打算在函数中使用此功能,建议您将其删除以清理代码。
答案 2 :(得分:0)
“鸭子”是什么意思?
鸭子:DuckView 我认为您应该先正确声明变量,然后再声明方法/函数。
您可以以此为参考。
func getHighscore(score: Int, highscore:Int) -> Int{
if score >= highscore{
return highscore = score + 1
}else{
// add your formula here
return highscore
}
}
您可以使用self.getHighscore(score:3,highscore:2)调用此方法
self.lblHighscore.text = "Pigs: \(self.getHighscore(score: 3, highscore: 2))" //This will return a new highscore value which is 4