es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    El problema parece estar con el nivel de acceso de la constante apiKey. Dado que está definida como public, 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 a internal. De esta manera, será accesible dentro del mismo módulo (que incluye tu aplicación y la biblioteca SwiftPackage agregada).

    internal let apiKey = "hjbcsddsbsdjhksdbvbsdbvsdbvs"
    

    Luego, puedes usarlo en la biblioteca de la siguiente manera:

    Library.configure(withAPIKey: apiKey)
    

    Esto debería solucionar el error “Cannot find apiKey in scope”.

Comments are closed.