Configuración de aplicaciones Swift (iOS/macOS): mejores prácticas y herramientas

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

Configuración de aplicaciones Swift (iOS/macOS): descripción general de herramientas y bibliotecas



La configuración de aplicaciones es uno de los aspectos clave del desarrollo para iOS y macOS. La flexibilidad, la capacidad de prueba y la seguridad de su producto dependen de una gestión correcta de los ajustes. En este artículo, analizaremos los mecanismos de configuración estándar en Swift, así como bibliotecas y herramientas populares que simplificarán la gestión de los parámetros de la aplicación.



Mecanismos de configuración integrados en Swift



1. Info.plist y Xcconfig

La forma básica de almacenar metadatos de la aplicación es el archivo Info.plist. Contiene la versión del bundle, el identificador, el nombre de la aplicación y otros parámetros del sistema. Para una gestión más flexible de la configuración (por ejemplo, diferentes valores para Debug/Release), se utilizan archivos .xcconfig.



// Example.xcconfigAPP_NAME = MyAppAPI_BASE_URL = https://api.example.comBUNDLE_ID_SUFFIX = .dev


En Swift, estos valores se pueden obtener a través de Bundle.main:



func getConfigValue(key: String) -> String? {    guard let value = Bundle.main.object(forInfoDictionaryKey: key) as? String else {        return nil    }    return value}

let baseURL = getConfigValue(key: "API_BASE_URL")


2. UserDefaults

Para almacenar las preferencias del usuario (tema, idioma, tamaño de fuente) se utiliza UserDefaults. Es una forma sencilla y rápida de guardar pequeñas cantidades de datos.



// GuardarUserDefaults.standard.set(true, forKey: "isDarkMode")UserDefaults.standard.set("ru", forKey: "language")

// Leerlet isDarkMode = UserDefaults.standard.bool(forKey: "isDarkMode")let language = UserDefaults.standard.string(forKey: "language") ?? "en"


3. SwiftUI AppStorage

En SwiftUI hay un property wrapper integrado @AppStorage que se sincroniza automáticamente con UserDefaults:



struct SettingsView: View {    @AppStorage("isDarkMode") private var isDarkMode = false    @AppStorage("fontSize") private var fontSize = 14.0

var body: some View { Form { Toggle("Tema oscuro", isOn: $isDarkMode) Slider(value: $fontSize, in: 10...30) { Text("Tamaño de fuente") } } }}


Bibliotecas de terceros para configuración



Aunque las herramientas estándar cubren los escenarios básicos, en proyectos reales a menudo se requieren soluciones más avanzadas. Veamos algunas bibliotecas populares.



1. SwiftyUserDefaults

Un envoltorio sobre UserDefaults con claves tipadas y soporte para Codable. Permite evitar errores relacionados con claves de cadena.



  • Soporte para todos los tipos estándar y Codable
  • Generación de código mediante Sourcery (opcional)
  • Sintaxis simple y concisa


import SwiftyUserDefaults

extension DefaultsKeys { var isDarkMode: DefaultsKey<Bool> { .init("isDarkMode", defaultValue: false) } var userName: DefaultsKey<String?> { .init("userName") }}

// UsoDefaults[\\.isDarkMode] = truelet name = Defaults[\\.userName] ?? "Invitado"


2. PropertyKit

Biblioteca para la descripción declarativa de la configuración. Permite agrupar ajustes y gestionar su visibilidad.



  • Soporte para secciones y grupos anidados
  • Validación de valores en tiempo real
  • Integración con Combine para actualización reactiva de la UI


import PropertyKit

struct AppConfig: PropertyGroup { @Property(key: "api_url", default: "https://api.example.com") var apiURL: String

@Property(key: "max_retries", default: 3, validator: { $0 > 0 && $0 < 10 }) var maxRetries: Int

@Property(key: "feature_x_enabled", default: false) var featureXEnabled: Bool

Recommendations