实例成员目标不能用于“ViewController”类型SWIFT XCODE

时间:2016-02-26 08:13:14

标签: ios xcode swift

嘿我正在尝试分类或基本上手动列出统计数据,我可以给出程序条件以找到我正在寻找的确切内容,如果我正在寻找在前0中得分的目标数量到了巴塞罗那在特定的一天我可以参加比赛的45场比赛(上半场)。在代码中说找到我在这个日期玩的所有游戏,并且在前0到45分钟内有两个或更多目标得分。因为我不确定我是否做得对,但我试图给字符串一个数字/ Int值来表示目标在游戏中得分的分钟。我也对游戏的日期做了同样的事情。但问题是有一个错误(不要介意拼写错误大声笑“巴塞罗那”)

 let BarcelonavsRealMadrid1 = [Goals, Penaltys]

实例成员目标不能用于“ViewController”类型

如果有更好的方法,请你可以重写我的代码。感谢

代码:

import UIKit

class ViewController: UIViewController {

     let Games = [BarcelonavsRealMadrid1: 1/13/14]
     let SpainPrimeraDivision = [RealMadrid, Bareclonia]
     let RealMadrid = [BarcelonavsRealMadrid1: 1/12/14]
     let Bareclonia = [BarcelonavsRealMadrid1: 1/12/14]

     let BarcelonavsRealMadrid1 = [Goals, Penaltys]
     let Goals : [String : Int] = ["BarcelonaGoal":21,"RealMadridGoal":23]
     let Penaltys  : [String : Int] = ["RealMadridPenalty":21,"BarcelonaPenalty":23]


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.
}


} 

3 个答案:

答案 0 :(得分:2)

您无法在另一个实例变量的默认分配中引用它。以下是您的问题的简化版本:

class ViewController: UIViewController {
    let foo = 12
    let bar = foo
}

通常你必须在init方法中设置变量。但是,由于此处有UIViewController,您必须在viewDidLoad中执行此操作。因此,你必须写

class ViewController: UIViewController {

    var foo : Int!
    var bar : Int!

    override func viewDidLoad() {
        super.viewDidLoad()
        foo = 12
        bar = foo
    }
}

您的代码存在个问题,但是:

  • 您试图在变量被广泛宣布之前访问变量
  • 1/12/14应该是什么?我保证你不是约会
  • 停止使用大写字母
  • 启动变量名称

你需要做什么:

  • 重命名所有变量
  • 将所有变量更改为var,并在viewDidLoad
  • 内以正确的顺序为分配值
  • 处理日期情况

答案 1 :(得分:1)

您的问题是您在初始化期间在类属性之间进行引用 - 这是不允许的。解决这个问题的一种方法是先设置一些内容,然后在viewDidLoad或viewWillAppear中设置依赖项,如下所示:

//-------All Games Ever played------------------------------------
var BarcelonavsRealMadrid1 = [[String : Int]]()  // if you want this globally
let Goals : [String : Int] = ["BarcelonaGoal":21,"RealMadridGoal":23]
let Penaltys  : [String : Int] = ["RealMadridPenalty":21,"BarcelonaPenalty":23]


override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view, typically from a nib.
    BarcelonavsRealMadrid1 = [Goals, Penaltys]
}

@ luk2302在他的回答中提出的问题也很少

答案 2 :(得分:1)

试试这个

var BarcelonavsRealMadrid1:[[String:Int]] { return [Goals, Penaltys] }