J'écris actuellement le code Swift 3 dans Xcode 8.
Lorsque j'utilise les paramètres par défaut oldValue
et newValue
dans les blocs willSet
et didSet
, l'erreur "unresolved identifier"
du compilateur m'arrive.
J'ai un code très basique comme ci-dessous
var vc:UIViewController? {
willSet {
print("Old value is \(oldValue)")
}
didSet(viewController) {
print("New value is \(newValue)")
}
}
Documentation Apple pour Swift 3 semble toujours prendre en charge ces fonctionnalités. J'espère que rien ne me manque ici?
Vous pouvez également utiliser vc
:
var vc:UIViewController? {
willSet {
print("New value is \(newValue) and old is \(vc)")
}
didSet {
print("Old value is \(oldValue) and new is \(vc)")
}
}
var vc:UIViewController? {
willSet {
print("New value is \(newValue)")
}
didSet {
print("Old value is \(oldValue)")
}
}
La variable spéciale newValue
ne fonctionne que dans willSet
, alors que oldValue
ne fonctionne que dans didSet
.
La propriété référencée par son nom (dans cet exemple, vc
) est toujours liée à l'ancienne valeur dans willSet
et est liée à la nouvelle valeur dans didSet
.
Vous n'avez pas essayé d'initialiser la variable avec un nouvel objet avec lequel vous pouvez définir votre clojure:
var vc:UIViewController? = UIViewController(){
willSet {
print("Old value is \(oldValue)")
}
didSet(viewController) {
print("New value is \(newValue)")
}
}