Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

223
Vistas
SwiftUI: ¿Por qué se usa una extensión para una estructura personalizada? (Tutorial para desarrolladores de aplicaciones Apple iOS)

En el [tutorial de desarrollo de aplicaciones para iOS] de Apple (a partir del 22 de enero) ( https://developer.apple.com/tutorials/app-dev-training ), en la sección Creación de una jerarquía de navegación , extendemos una estructura que tenemos definido.

He intentado leer ladocumentación de Swift sobre extensiones, pero realmente no entiendo por qué se hace esto aquí. La documentación habla sobre la extensión de los tipos de sistemas, como agregar propiedades adicionales al tipo de sistema Double , pero no agregar propiedades adicionales a algo sobre lo que tenemos control total, como nuestra propia estructura.

Estoy seguro de que es una mejor práctica, ya que este es un tutorial de Apple, pero realmente no hacen un buen trabajo al explicarlo.

Este es un ejemplo del código que quieren que escribas:

 import SwiftUI struct DailyScrum: Identifiable { let id: UUID var title: String var attendees: [Attendee] var lengthInMinutes: Int var theme: Theme init(id: UUID = UUID(), title: String, attendees: [String], lengthInMinutes: Int, theme: Theme) { self.id = id self.title = title self.attendees = attendees.map { Attendee(name: $0) } self.lengthInMinutes = lengthInMinutes self.theme = theme } } extension DailyScrum { struct Attendee: Identifiable { let id: UUID var name: String init(id: UUID = UUID(), name: String) { self.id = id self.name = name } } }

No estoy seguro de por qué la estructura de Attendee debe definirse dentro de una extensión. Por ejemplo, esto también funciona:

 import SwiftUI struct Attendee: Identifiable { let id: UUID var name: String init(id: UUID = UUID(), name: String) { self.id = id self.name = name } } struct DailyScrum: Identifiable { let id: UUID var title: String var attendees: [Attendee] var lengthInMinutes: Int var theme: Theme init(id: UUID = UUID(), title: String, attendees: [String], lengthInMinutes: Int, theme: Theme) { self.id = id self.title = title self.attendees = attendees.map { Attendee(name: $0) } self.lengthInMinutes = lengthInMinutes self.theme = theme } }

No estoy seguro de por qué harías uno sobre el otro.

over 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

Es estilo y también enfoca el código en este caso.

Su tipo como se escribió originalmente es

 DailyScrum.Attendee

Si lo cambia a la segunda versión, tendrá 2 tipos independientes separados.

 Attendee

y

 DailyScrum

Sin mirar el tutorial, asumiría que hay otro tipo de Attendee . Tal como..

 Conference.Attendee

o

 WeeklyScrum.Attendee

Pero como señaló, esto solo tendría sentido si son diferentes como un homónimo. Algunas muestras son...

 Bird.Crane Construction.Crane

o

 Dog.Bark Tree.Bark

Si todo lo que está utilizando es una id y un name , no tiene sentido tener una estructura de datos separada.

over 4 years ago · Santiago Trujillo Denunciar

0

En el tutorial, creo que es una elección de patrón para que el modelo de datos refleje más fielmente el diseño de SwiftUI para facilitar la comprensión.

Los asistentes solo aparecen como una vista secundaria de detailView usando ForEach(...) para generar un VStack. Por lo tanto, en este caso, donde no se usa MVVM, tiene sentido asignar claramente el modelo de datos a la vista y hacer explícito en el patrón de código que el tipo de asistente solo ocurre dentro de una instancia de DailyScrum, tal como los detalles de los asistentes solo aparecen dentro de detailView.

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda