lazy - swift methods
Swift-Setter personalizado en la propiedad (2)
Aquí hay una versión Swift 3
var document : UIDocument? {
didSet {
useDocument()
}
}
Estoy convirtiendo un proyecto en código Swift y me he encontrado con un problema en un setter. Mi código Objective-C se veía así:
- (void)setDocument:(MyDocument *)document
{
if (![_document isEqual:document]) {
_document = document;
[self useDocument];
}
}
y permitió que mi View Controller se ejecute cada vez que se configuró el documento (normalmente en el método prepareForSegue:
del controlador View que se presenta).
He encontrado que los observadores de la propiedad willSet
y didSet
pero solo funcionan cuando la propiedad se está actualizando, no cuando se inicializa y se actualiza.
¿Algunas ideas? Gracias
ACTUALIZAR
después de intentar obtener {} y establecer {} obtengo el error EXC_BAD_ACCESS
var document: UIDocument? {
get {
return self.document!
}
set {
self.document = newValue
useDocument()
}
}
No puedes usar set
así porque cuando llamas self.document = newValue
solo estás llamando al setter nuevamente; Has creado un bucle infinito.
Lo que tiene que hacer en su lugar es crear una propiedad separada para almacenar el valor en:
private var _document: UIDocument? = nil
var document: UIDocument? {
get {
return self._document
}
set {
self._document = newValue
useDocument()
}
}