RSS Use Your Loaf - Noticias y consejos de desarrollo de iOS Useyourloaf.com/blog es un blog de panadería y cocina escrito por Michelle Roux, que cuenta con una amplia variedad de recetas, consejos de panadería y aventuras culinarias. RSS useyourloaf.com Use Your Loaf - iOS Development News & Tips useyourloaf.com
Tratar advertencias como errores en paquetes Swift "Swift 6.2 introduce un control más detallado sobre las advertencias del compilador dentro de los paquetes de Swift. Anteriormente, Xcode permitía tratar todas las advertencias como errores o suprimir todas las advertencias a través de flags personalizados. Sin embargo, Swift 6.1 introdujo opciones para tratar grupos de diagnóstico específicos como advertencias o errores, como "-Werror DeprecatedDeclaration". Sin embargo, estos controles granulares no estaban soportados en los paquetes de Swift hasta Swift 6.2.Para utilizar estas nuevas características, los desarrolladores deben actualizar la versión de las herramientas de Swift a 6.2 en el archivo Package.swift. Swift 6.2 ofrece nuevos swiftSettings como treatAllWarnings(as:) y treatWarning("grupo", as:). Estos ajustes permiten una configuración precisa, por ejemplo, tratar todas las advertencias como errores excepto para un grupo específico como "DeprecatedDeclaration". Es importante tener en cuenta que estos ajustes de control de advertencias solo se aplican cuando un paquete se construye directamente y se ignoran cuando se utiliza como dependencia remota. Los desarrolladores pueden aplicar estos controles a todos los objetivos dentro de un paquete iterando a través de los objetivos y agregando los ajustes deseados a sus swiftSettings. Esta mejora proporciona una mayor flexibilidad en la gestión de advertencias y errores en tiempo de compilación." Treating Warnings As Errors In Swift Packages useyourloaf.com
Identificadores Crudos de Swift Swift 6.2 introduce los identificadores raw, permitiendo el uso de caracteres previamente prohibidos en los nombres de identificadores. Esta característica, implementada a través de SE-0451, permite que los identificadores se encierren entre acentos graves ( ). Una aplicación clave es en Swift Testing, donde los identificadores raw pueden eliminar la redundancia en la nomenclatura de las funciones de prueba. En lugar de escribir una cadena descriptiva para el atributo @Test y un nombre de función convencional por separado, un identificador raw puede servir para ambos propósitos. Esto hace que los nombres de las funciones de prueba sean descriptivos y visibles en el Navegador de Pruebas y en los informes. Otro escenario útil es para los casos de enum que corresponden naturalmente a números. Anteriormente, se necesitaban prefijos para evitar que los identificadores comenzaran con dígitos. Con los identificadores raw, los casos de enum como 24 o 30 pueden representarse directamente utilizando acentos graves. Esto simplifica el código al evitar prefijos artificiales para los casos de enum numéricos. Si bien el uso de acentos graves puede parecer un poco engorroso, ofrece una mejora significativa en la claridad y expresividad del código. Swift Raw Identifiers useyourloaf.com
Observaciones rápidas AsyncSequence para cambios de estado Swift 6.2 introduce un nuevo tipo Observations para transmitir cambios de estado desde tipos Observable. Esto es útil para persistir el estado de la aplicación, como la consulta de búsqueda y la ruta de navegación de una escena. El autor previamente gestionaba este estado en una clase Codable, SceneModel, que podía codificarse a JSON para la persistencia.Este SceneModel se guardaba y restauraba usando @SceneStorage en la vista raíz. Sin embargo, guardar el estado dependía de monitorear la scenePhase, lo cual era poco fiable ya que las escenas podían terminar antes de entrar en segundo plano. Antes de Swift 6.2, ObservableObject con propiedades @Published permitía usar buffer y values de Combine para crear una AsyncSequence para guardar los cambios de estado.Con iOS 26 y Swift 6.2, el tipo Observations proporciona una AsyncSequence similar para los tipos Observable. Esto permite observar propiedades calculadas, como la representación JSON del SceneModel. El tipo Observations toma un closure que devuelve el valor a observar.Los cambios son transaccionales, lo que significa que múltiples actualizaciones síncronas a las propiedades observables se agrupan en un único valor de secuencia. El seguimiento de las actualizaciones comienza con el willSet de las propiedades observables y concluye en el siguiente punto de suspensión. Esto permite guardar el estado del modelo de escena automáticamente cada vez que cambia, sin depender de scenePhase. La AsyncSequence de Observations emite el valor inicial de la propiedad observada al suscribirse. Swift Observations AsyncSequence for State Changes useyourloaf.com
Ámbito de Atajos de Teclado en SwiftUI El modificador .keyboardShortcut de SwiftUI, introducido en iOS 14, permite asignar atajos de teclado a los controles. Estos atajos activan la acción principal del control. El modificador puede personalizar las teclas modificadoras más allá de la tecla de comando predeterminada. Un ejemplo clave muestra la navegación entre vistas con atajos aplicados a los botones. Sorprendentemente, los atajos permanecen activos incluso cuando el control asociado está fuera de la pantalla. Este comportamiento se debe al recorrido en profundidad de SwiftUI de la jerarquía de vistas para encontrar los objetivos del atajo. El sistema prioriza la búsqueda del primer control coincidente, independientemente de su visibilidad. Esto puede llevar a un comportamiento inesperado donde los controles fuera de la pantalla siguen respondiendo a los atajos. Una solución implica deshabilitar los controles utilizando el modificador .disabled basándose en el estado de la vista. Esto garantiza que los atajos solo estén activos cuando los controles relevantes sean visibles. El comentario de Curt Clifton proporciona contexto adicional. SwiftUI Keyboard Shortcut Scope useyourloaf.com
Funciones de trazado de gráficos de SwiftUI El marco de gráficos SwiftUI de iOS 18 ahora admite la trazabilidad de funciones utilizando LinePlot y AreaPlot. Estos gráficos aceptan funciones que asignan Doubles a Doubles. Las funciones pueden manejar valores indefinidos devolviendo Double.nan o Double.infinity. Una sola función en AreaPlot llena el área entre la función y el eje x. Dos funciones pueden definir un área entre ellas. La trazabilidad de funciones ayuda a visualizar datos contra aproximaciones funcionales esperadas. Combinar gráficos de barras con trazabilidad de funciones permite una comparación directa. Un ejemplo muestra la comparación de un gráfico de barras con una parábola utilizando tanto AreaPlot como LinePlot. La nueva función se anunció en WWDC24. La información se publicó originalmente en useyourloaf.com. SwiftUI Charts Plotting Functions useyourloaf.com
Seguimiento automático de rasgos En iOS 18, UIKit introduce un seguimiento automático de rasgos, lo que elimina la necesidad de registrar manualmente notificaciones de cambios de rasgos en los métodos de actualización de diseño. Esta característica está soportada en varios métodos de vistas y controladores de vistas, incluyendo layoutSubviews, updatesConstraints y draw de UIView, así como viewWillLayoutSubviews y updateViewConstraints de UIViewController. Cuando UIKit llama a uno de estos métodos, registra qué rasgos se acceden y automáticamente invalida la vista cuando esos rasgos cambian. Esto se hace utilizando métodos como setNeedsLayout, setNeedsUpdateConstraints, setNeedsDisplay o setNeedsUpdateConfiguration. Por ejemplo, en una subclase de UIView que sobreescribe draw, acceder al rasgo preferredContentSizeCategory desencadenará una llamada automática a setNeedsDisplay cuando el rasgo cambie. Anteriormente a iOS 18, los desarrolladores tenían que registrar manualmente los cambios de rasgos y llamar a setNeedsDisplay para desencadenar una nueva llamada a draw. Sin embargo, con el seguimiento automático de rasgos, este proceso ahora es manejado por UIKit. Esta característica simplifica el proceso de responder a cambios de rasgos y reduce la cantidad de código necesaria. El seguimiento automático de rasgos es una mejora significativa en iOS 18, lo que facilita a los desarrolladores crear interfaces de usuario adaptables y responsivas. Automatic Trait Tracking useyourloaf.com
SwiftUI Disposiciones de flujo de tamaño automático El artículo discute cómo crear un diseño de tarjeta en SwiftUI utilizando UICollectionView y UICollectionViewFlowLayout. Explica cómo calcular el tamaño ideal para las tarjetas, determinar el número de tarjetas en una fila y columna, y colocar las subvistas en el contenedor. El artículo también cubre la caché y cómo utilizar el diseño personalizado en una vista de desplazamiento vertical. SwiftUI Self-Sizing Flow Layouts useyourloaf.com
Etiquetas de accesibilidad condicionales de SwiftUI En iOS 18, Apple introdujo un parámetro isEnabled opcional a varios modificadores de accesibilidad en SwiftUI. Este parámetro permite a los desarrolladores aplicar modificadores de accesibilidad condicionalmente según condiciones específicas. El parámetro isEnabled está disponible para modificadores como .accessibilityLabel, .accessibilityInputLabels, .accessibilityValue y .accessibilityHint. Esta función es útil cuando los desarrolladores necesitan invalidar el comportamiento de accesibilidad predeterminado condicionalmente. Por ejemplo, en una lista de elementos con un botón para alternar el estado de favorito, la etiqueta de accesibilidad predeterminada para la acción del botón se puede cambiar según el estado de favorito. En lugar de proporcionar una etiqueta de accesibilidad condicional, los desarrolladores pueden usar la variante isEnabled del modificador para aplicar una etiqueta personalizada solo cuando se cumple una condición específica. Este enfoque evita repetir y localizar la etiqueta predeterminada. En el ejemplo proporcionado, el modificador .accessibilityLabel se usa con el parámetro isEnabled para aplicar una etiqueta personalizada "No favorito" solo cuando el elemento es favorito. Esta es una pequeña mejora que simplifica el código y reduce los esfuerzos de localización. La introducción del parámetro isEnabled en iOS 18 mejora la flexibilidad de los modificadores de accesibilidad en SwiftUI. Conditional SwiftUI Accessibility Labels useyourloaf.com