我有以下代码,对此错误消息感到困惑:
实例成员“ 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) ]
当我编写以下内容时,可以构建它,但是我不知道为什么奇怪的片段不起作用:
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) ]
这里的问题是您self在完全初始化类之前就在使用。您可以具有一个getter,每次访问变量时将调用该getter或进行延迟计算。
self
这是一些代码:
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) ] } } }
延迟计算:
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) ] }() }