property lazy example computed and swift setter

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() } }