Tengo una macro en un proyecto de Objective-C que acorta la escritura de una referencia larga:

#define CURRENT_USER DataConnector.sharedInstance.currentUser

Esto me permite pasar CURRENT_USER en lugar de ^ para hacer referencia al usuario actual.

¿Cómo replicaría esto en Swift? Probé esta sugerencia {{X0} } solución, pero parece que en realidad crea una variable que es inmutable. ¿Es apropiado usar var en su lugar? ¿Y si el #define fuera en su lugar:

#define CONST_STR = static NSString* const

... que se puede utilizar como:

CONST_STR kXXSomeConstant = @"a constant string";

¿Se puede usar la solución Swift let (o var?) de la misma manera?

0
brandonscript 27 ene. 2016 a las 20:42

2 respuestas

La mejor respuesta

Tengo entendido que el compilador Swift no usa el preprocesador de C, por lo que las macros simplemente no son posibles. Al igual que los otros comentaristas, sugeriría encontrar una forma más rápida de manejar esta situación. Las macros tienen un serio inconveniente, como lo señaló @ originaluser2 en su comentario. (Sin mencionar el defecto fatal de no tener soporte en Swift).

3
Duncan C 27 ene. 2016 a las 20:17

Debería poder usar una var con un getter personalizado:

var CURRENT_USER : User {
    return DataConnector.sharedInstance.currentUser
}
1
David Berry 27 ene. 2016 a las 17:53