这里有什么问题:实例成员不能用于类型

gur*_*gui 37 ios swift swift2

我有以下代码,我对此错误消息感到困惑:

实例成员'mydate'不能用于'TableViewController'类型

码:

class TableViewController: UITableViewController {    
    let mydate = NSDate()
    let items = [
        (1, 9, 7, "A", mydate),
        (2, 9, 7, "B", mydate),
        (3, 9, 7, "C", mydate),
        (4, 9, 7, "D", mydate)
    ]
Run Code Online (Sandbox Code Playgroud)

当我写下面的内容时,我可以构建它,但我不知道为什么oder片段不起作用:

class TableViewController: UITableViewController {    
    let mydate = NSDate()
    let items = [
        (1, 9, 7, "A", nil),
        (2, 9, 7, "B", mydate),
        (3, 9, 7, "C", mydate),
        (4, 9, 7, "D", mydate)
    ]
Run Code Online (Sandbox Code Playgroud)

avi*_*ara 41

这里的问题是你self在完全初始化类之前使用的.您可以拥有一个getter,每次访问变量时都会调用它,或者懒惰地计算它.

这是一些代码:

class TableViewController: UITableViewController {
    let mydate = NSDate()
    var items : [(Int,Int,Int,String,NSDate)] {
        get {
            return [
                (1, 9, 7, "A", mydate),
                (2, 9, 7, "B", mydate),
                (3, 9, 7, "C", mydate),
                (4, 9, 7, "D", mydate)
            ]

        }
    }
}
Run Code Online (Sandbox Code Playgroud)

懒惰计算:

class TableViewController: UITableViewController {
    let mydate = NSDate()
    lazy var items : [(Int,Int,Int,String,NSDate)] =  {

            return [
                (1, 9, 7, "A", self.mydate),
                (2, 9, 7, "B", self.mydate),
                (3, 9, 7, "C", self.mydate),
                (4, 9, 7, "D", self.mydate)
            ]


    }()
}
Run Code Online (Sandbox Code Playgroud)