Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

218
Visualizações
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 Respostas
Responde à pergunta

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda