J'ai le code suivant et je suis confus à propos de ce message d'erreur:
Le membre d'instance 'mydate' ne peut pas être utilisé sur le type 'TableViewController'
Code:
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)
]
Quand j'écris ce qui suit, je peux le construire, mais je ne sais pas pourquoi l'extrait oder ne fonctionne pas:
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)
]
Le problème ici est que vous utilisez self
avant que la classe ne soit complètement initialisée. Vous pouvez soit avoir un getter qui sera appelé à chaque fois que vous accédez à la variable, soit la calculer paresseusement.
Voici du code:
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)
]
}
}
}
Calcul paresseux:
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)
]
}()
}
Vous pouvez utiliser ce code
var items:Array<(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)
]
}
}