En mis proyectos de Objective-C, a menudo uso un archivo de constantes globales para almacenar cosas como nombres de notificaciones y claves NSUserDefaults
. Se parece a esto:
@interface GlobalConstants : NSObject
extern NSString *someNotification;
@end
@implementation GlobalConstants
NSString *someNotification = @"aaaaNotification";
@end
¿Cómo hago exactamente lo mismo en Swift?
ios
objective-c
swift
usuario1028028
fuente
fuente
Respuestas:
Estructuras como espacio de nombres
En mi opinión, la mejor manera de lidiar con ese tipo de constantes es crear un Struct.
Luego, por ejemplo, llámalo así en tu código:
Anidamiento
Si desea una mejor organización, le aconsejo que use subestructuras segmentadas.
Entonces puedes usar por ejemplo
K.Path.Tmp
Ejemplo del mundo real
Esta es solo una solución técnica, la implementación real en mi código se parece más a:
y
fuente
Constant.swift
archivo con estructuras separadas pero no encapsulado en unaConstants
estructura grande para evitar una llamada demasiado larga a una constante. Entonces llamo enNotificationKey.Welcome
lugar deConstants.NotificationKey.Welcome
Constants.swift
) y siempre se ven iguales: comenzando con mayúsculas y con un nombre de categoría significativo como "NotificationKey", "SegueIdentifier" o "Path", .. . Así puedo ver fácilmente cuando es una constante;)struct Helpers { static func RGBCOLOR(red: Int, green: Int, blue: Int) -> UIColor { return UIColor(red: CGFloat(red) / 255.0, green: CGFloat(green) / 255.0, blue: CGFloat(blue) / 255.0, alpha: 1) } static func IOS7VERSION() -> Bool { return UIDevice.currentDevice().systemVersion.compare("7.0", options: .NumericSearch, range: nil, locale: nil) != .OrderedAscending } }
Llego un poco tarde a la fiesta.
No importa cómo administro el archivo de constantes para que tenga más sentido para los desarrolladores mientras escribo código rápidamente.
PARA URL:
Para PERSONALIZADOS:
PARA TODAS LAS CLAVES UTILIZADAS EN LA APLICACIÓN
PARA CONSTANTES DE COLOR:
Puede envolver todos estos archivos en un grupo común llamado Constantes en su Proyecto Xcode.
Y para más mira este video
fuente
Aunque prefiero la forma de @ Francescu (usando una estructura con propiedades estáticas), también puede definir constantes y variables globales:
Sin embargo, tenga en cuenta que, a diferencia de las variables / constantes locales y las propiedades de clase / estructura, los globales son implícitamente vagos, lo que significa que se inicializan cuando se accede por primera vez.
Lectura sugerida: las variables globales y locales , y también las variables globales en Swift no son variables
fuente
Constant.swift
ViewController.swift
fuente
Considere enumeraciones. Estos se pueden dividir lógicamente para casos de uso separados.
Un beneficio único ocurre cuando tiene una situación de opciones mutuamente excluyentes, como:
En este ejemplo, recibirá un error de compilación porque no ha manejado el caso de
PhotoMetaKeys.DateTaken
.fuente
O simplemente en GlobalConstants.swift:
fuente
Como otros han mencionado, cualquier cosa declarada fuera de una clase es global.
También puedes crear singletons:
Cada vez que quiera usar algo de esta clase, por ejemplo, escriba:
Si ahora escribe
println(TestClass.sharedInstance.number)
desde cualquier parte de su proyecto, imprimirá1
en el registro. Esto funciona para todo tipo de objetos.tl; dr: cada vez que desee convertir todo en una clase en global, agregar
static let sharedInstance = YourClassName()
a la clase y abordar todos los valores de la clase con el prefijoYourClassName.sharedInstance
fuente
Lo que hice en mi proyecto Swift
1: crear un nuevo archivo Swift
2: crear una estructura y una constante estática en él.
3: Para usar solo use YourStructName.baseURL
Nota: Después de crear la inicialización toma poco tiempo, por lo que se mostrará en otros controladores de vista después de 2-5 segundos.
fuente
Para las notificaciones, puede usar la extensión, algo como esto:
Y úsalo como
NotificationCenter.default.post(name: .testNotification, object: nil)
fuente
Para tener constantes globales en mis aplicaciones, esto es lo que hago en un archivo Swift separado :
Es fácil de usar y llamar a todas partes de esta manera:
fuente
Colores
Fuentes
Para otro, todo lo mismo que en la respuesta aceptada.
fuente
De acuerdo con los documentos rápidos, las variables globales se declaran en el alcance del archivo.
Simplemente cree un archivo rápido (por ejemplo: Constnats.swift) y declare sus constantes allí:
y llámelo desde cualquier parte de su proyecto sin la necesidad de mencionar struct, enum o nombre de clase.
Creo que esto es mucho mejor para la legibilidad del código.
fuente
Versión Swift 4
Si desea crear un nombre para NotificationCenter:
Suscríbase a las notificaciones:
Enviar notificación:
Si solo quieres usar una clase con variables:
O:
fuente
Las enumeraciones sin carcasa también se pueden utilizar.
Ventaja: no se pueden crear instancias.
fuente
Aprender de Apple es la mejor manera.
Por ejemplo, la notificación del teclado de Apple:
Ahora aprendo de Apple:
Además
NSAttributedString.Key.foregroundColor
:Ahora aprendo de Apple:
uso:
Aprender de Apple es la forma en que todos pueden hacerlo y pueden promover la calidad de su código fácilmente.
fuente