这里有什么问题:实例成员不能用于类型 [英] What's wrong here: Instance member cannot be used on type
本文介绍了这里有什么问题:实例成员不能用于类型的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有以下代码,我对此错误消息感到困惑:
I have the following code and I'm confused about this error message:
实例成员'mydate'不能用于类型'TableViewController'
Instance member 'mydate' cannot be used on type '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)
]
当我写下以下内容时,我可以构建它,但我不知道为什么oder代码片段不工作:
When I write the following, I can build it but I don't know why the oder snippet is not working:
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,每次访问变量时都会调用它,或者懒惰地计算它。
The problem here is that you are using self
before the class is fully initialised. You can either have a getter which will be called every time you access the variable or compute it lazily.
以下是一些代码:
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)
]
}()
}
这篇关于这里有什么问题:实例成员不能用于类型的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文