我已经读过一本有关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类中的方法和属性。

09-08 10:27