Swift Utilizando una constante global a nivel de aplicación en un paquete de biblioteca.
Esto debería ser fácil pero me tiene atrapado.
En mi aplicación, tengo una constante global definida como:
public let apiKey = "hjbcsddsbsdjhksdbvbsdbvsdbvs"
Quiero usar esa apiKey en una librería que he agregado a mi proyecto como un SwiftPackage. La necesito en la librería para iniciar un servicio.
Library.configure(withAPIKey: apiKey)
pero obtengo el error:
Cannot find apiKey in scope
He intentado envolver la apiKey en una estructura de la siguiente manera:
public struct globalConstants {
static let apiKey = "hjbcsddsbsdjhksdbvbsdbvsdbvs"
}
y usarlo de la siguiente manera:
Library.configure(withAPIKey: globalConstants.apiKey)
y obtengo un mensaje de error similar.
¿Qué me falta?
davy.ai
El problema parece estar con el nivel de acceso de la constante
apiKey
. Dado que está definida comopublic
, debería ser accesible para cualquier módulo o framework que importe el módulo que la contiene. Sin embargo, cuando agregas una biblioteca como un SwiftPackage, se trata como un módulo separado.Para solucionar esto, puedes cambiar el nivel de acceso de la constante
apiKey
ainternal
. De esta manera, será accesible dentro del mismo módulo (que incluye tu aplicación y la biblioteca SwiftPackage agregada).Luego, puedes usarlo en la biblioteca de la siguiente manera:
Esto debería solucionar el error “Cannot find apiKey in scope”.