Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

259
Views
Vinculación de modelos a activos en Swift Playgrounds para iPad (sin Xcode) -- Tutoriales para desarrolladores de aplicaciones de iOS

Desbordamiento de pila. Esta es mi primera publicación. Disculpe cualquier problema con el formato.

He estado tratando de aprender algo sobre el desarrollo de iOS para crear una aplicación que me ayude en el trabajo (soy agricultor). No tengo una computadora Mac y no puedo obtener una actualmente, lo que significa que no tengo Xcode, pero tengo un iPad. Recientemente, Apple hizo posible desarrollar y publicar aplicaciones desde iPad en Swift Playgrounds.

Busqué en Internet tutoriales específicos de Playgrounds y no encontré muchas cosas, supongo que porque la funcionalidad es bastante nueva. Los mejores tutoriales de SwiftUI que encontré provienen de los tutoriales de desarrollo de aplicaciones iOS de Apple. Ahora estoy trabajando en el código de Scrumdinger y encontré un problema con los colores que se definieron dentro de una carpeta de Activos en Xcode desde archivos .json.

Por favor, consulte esta estructura para mi pregunta:

 import Foundation struct DailyScrum { var title: String var attendees: [String] var lengthInMinutes: Int var theme: Theme } extension DailyScrum { static let sampleData: [DailyScrum] = [ DailyScrum(title: "Design", attendees: ["Cathy", "Daisy", "Simon", "Jonathan"], lengthInMinutes: 10, theme: .yellow), DailyScrum(title: "App Dev", attendees: ["Katie", "Gray", "Euna", "Luis", "Darla"], lengthInMinutes: 5, theme: .orange), DailyScrum(title: "Web Dev", attendees: ["Chella", "Chris", "Christina", "Eden", "Karla", "Lindsey", "Aga", "Chad", "Jenn", "Sarah"], lengthInMinutes: 5, theme: .poppy) ] }

Este fragmento de código del tutorial de Apple

 import SwiftUI struct CardView: View { let scrum: DailyScrum var body: some View { VStack(alignment: .leading) { Text(scrum.title) .font(.headline) Spacer() HStack { Label("\(scrum.attendees.count)", systemImage: "person.3") Spacer() Label("\(scrum.lengthInMinutes)", systemImage: "clock") .labelStyle(.trailingIcon) } .font(.caption) } .padding() .foregroundColor(scrum.theme.accentColor) } } struct CardView_Previews: PreviewProvider { static var scrum = DailyScrum.sampleData[0] static var previews: some View { CardView(scrum: scrum) .background(scrum.theme.mainColor) .previewLayout(.fixed(width: 400, height: 60)) } }

se supone que genera esta vista previa en Xcode . Sin embargo, esto es lo que obtengo en iPad Playgrounds . Tanto el color como el tamaño de vista previa están desactivados. Realmente no me importa el tamaño de la vista previa, porque no afecta la aplicación (esta tarjeta se mostrará en una lista y tendrá el tamaño apropiado más adelante), pero me gustaría obtener el color correcto.

La estructura Theme que se usa para especificar los colores se define en el archivo Theme.swift :

 import SwiftUI enum Theme: String { case bubblegum case buttercup case indigo case lavender case magenta case navy case orange case oxblood case periwinkle case poppy case purple case seafoam case sky case tan case teal case yellow var accentColor: Color { switch self { case .bubblegum, .buttercup, .lavender, .orange, .periwinkle, .poppy, .seafoam, .sky, .tan, .teal, .yellow: return .black case .indigo, .magenta, .navy, .oxblood, .purple: return .white } } var mainColor: Color { Color(rawValue) } }

Y los colores especificados en la enumeración son activos .json en Xcode con esta estructura de carpetas . Sin embargo, el tutorial en línea no especifica cómo Xcode sabe buscarlos sin referencias explícitas a estas carpetas o archivos .json en el código de Theme.swift.

Traté de recrear la misma estructura de carpetas dentro de Playgrounds (lo cual fue doloroso ya que no puedes importar carpetas), pero mi salida no cambió.

Asi que aqui están mis preguntas:

  1. ¿Cómo vincula Xcode los activos a los modelos de datos personalizados (como la enumeración en Theme.swift) que no hacen referencia específica? ¿Puedo reproducir esto solo con código en Swift Playgrounds en iPad?
  2. Si no puedo hacer eso en Swift Playgrounds, ¿tengo una alternativa para crear colores personalizados y hacer que funcionen con la enumeración en Theme.swift?

Muchas gracias.

over 4 years ago · Santiago Trujillo
1 answers
Answer question

0

Siguiendo la sugerencia de @loremipsum, reemplacé la propiedad mainColor de la enumeración Theme con

 var mainColor: Color { switch self { case .bubblegum: return Color(red: 0.933, green: 0.502, blue: 0.820) case .buttercup: return Color(red: 1.000, green: 0.945, blue: 0.588) case .indigo: return Color(red: 0.212, green: 0.000, blue: 0.443) case .lavender: return Color(red: 0.812, green: 0.808, blue: 1.000) case .magenta: return Color(red: 0.647, green: 0.075, blue: 0.467) case .navy: return Color(red: 0.000, green: 0.078, blue: 0.255) case .orange: return Color(red: 1.000, green: 0.545, blue: 0.259) case .oxblood: return Color(red: 0.290, green: 0.027, blue: 0.043) case .periwinkle: return Color(red: 0.525, green: 0.510, blue: 1.000) case .poppy: return Color(red: 1.000, green: 0.369, blue: 0.369) case .purple: return Color(red: 0.569, green: 0.294, blue: 0.949) case .seafoam: return Color(red: 0.796, green: 0.918, blue: 0.898) case .sky: return Color(red: 0.431, green: 0.573, blue: 1.000) case .tan: return Color(red: 0.761, green: 0.608, blue: 0.494) case .teal: return Color(red: 0.133, green: 0.561, blue: 0.620) case .yellow: return Color(red: 1.000, green: 0.875, blue: 0.302) } }

copiando los valores RGB para los temas de los archivos de activos .json. Esto solucionó el problema y ahora los colores aparecen según lo previsto.

Lo que no entiendo es por qué SwiftUI no pudo procesar Color(rawValue) para los datos de ejemplo utilizados en CardView() , que fue DailyScrum(title: "Design", attendees: ["Cathy", "Daisy", "Simon", "Jonathan"], lengthInMinutes: 10, theme: .yellow) . Claro, es posible que .periwinkle no esté definido previamente, pero .yellow ciertamente lo está. De hecho, si reescribo mainColor de Color(rawValue) a Color(.yellow) , obtengo todas las tarjetas de color amarillo sin tener que pasar ningún valor RGB.

Entonces, ¿qué Color(rawValue) de la enumeración que no puede procesar .yellow cuando se pasa desde rawValue ?

over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!