我已经读过一本有关Swift逻辑的书,但是我不知道如何在xCode 8中将它与界面结合使用来制作应用。我正在制作一个非常基本的应用,其中您拥有货币(硬币),并且当您单击按钮(goldPan),它会检查一下goldPan正在进行的升级,并且根据该升级,用户会获得大量硬币,基本上就像游戏cookie单击器一样。我没有写大量的“ if”语句,而是决定建立一个“ switch”来检查goldPan正在进行的升级。此外,goldPan有其自己的类。我更多的是问“是否切换检查升级的方式?如果可以,如何用我的代码实现它。就像我说的那样,我不确定这是否是最有效的方法,但是我何时使用此方法,我收到了错误消息
在类型'ViewController.goldPan'上使用实例成员'checkUpgradeNumber';您的意思是改用'ViewController.goldPan'类型的值吗?
和
实例成员'production'不能在'ViewController.goldPan'类型上使用
请帮助我,我不确定切换是否是最好的选择或其他方法。很抱歉这个菜鸟问题。我的代码如下:
import UIKit
class ViewController: UIViewController {
@IBOutlet var topLabel: UILabel!
var coins = 0;
class goldPan {
var upgradeNumber = 0
var production = 1
func checkUpgradeNumber() {
switch upgradeNumber {
case 0:
production = 1;
case 1:
production = 2;
case 2:
production = 3;
default:
production = 1;
}
}
}
@IBAction func goldPanButton(_ sender: Any) {
goldPan.checkUpgradeNumber();
coins = coins + goldPan.production
}
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
最佳答案
首先,请考虑类名以大写字母(GoldPan
)开头的命名约定。
您正在调用方法并访问该类上的属性,而该代码无法实现。
使方法和属性成为静态
...
static var upgradeNumber = 0
static var production = 1
class func checkUpgradeNumber() { ...
或创建类的实例
let goldPan = Goldpan()
goldPan.checkUpgradeNumber()
coins = coins + goldPan.production
但基本上我想您不需要为此使用单独的类。删除内部的
class
块,并使用ViewController
类中的方法和属性。