Dear all, I'm building an app leveraging SwiftData and I have the following two classes:
- Stagione:
import SwiftData
@Model
class Stagione {
@Attribute(.unique) var idStagione: String
var categoriaStagione: String
var miaSquadra: String
@Relationship(deleteRule: .cascade) var rosa: [Rosa]?
@Relationship(deleteRule: .cascade) var squadra: [Squadre]?
@Relationship(deleteRule: .cascade) var partita: [CalendarioPartite]?
init(idStagione: String, categoriaStagione: String, miaSquadra: String) {
self.idStagione = idStagione
self.categoriaStagione = categoriaStagione
self.miaSquadra = miaSquadra
}
}
- Squadre:
import SwiftData
@Model
class Squadre {
var squadraCampionato: String
var stagione: Stagione?
init(squadraCampionato: String) {
self.squadraCampionato = squadraCampionato
}
}
Now, I have a view in which I'm calling a sheet to insert some Squadre:
// Presenta il foglio per aggiungere una nuova partita
GroupBox(label: Text("Dettagli Partita").font(.headline).padding()) {
VStack {
HStack {
Text("Giornata:")
TextField("Giornata", text: $idGiornata)
.frame(width: 30)
.textFieldStyle(RoundedBorderTextFieldStyle())
.padding()
}
DatePicker("Data Partita:", selection: $dataPartita, displayedComponents: .date)
.padding()
HStack {
Text("Squadra Casa:")
.frame(width: 150)
TextField("Squadra Casa", text: $squadraCasa)
.textFieldStyle(RoundedBorderTextFieldStyle())
.padding()
TextField("Gol Casa", text: $golCasa)
.textFieldStyle(RoundedBorderTextFieldStyle())
.padding()
}
HStack {
Text("Squadra Trasferta:")
.frame(width: 150)
TextField("Squadra Trasferta", text: $squadraTrasferta)
.textFieldStyle(RoundedBorderTextFieldStyle())
.padding()
TextField("Gol Trasferta", text: $golTrasferta)
.textFieldStyle(RoundedBorderTextFieldStyle())
.padding()
}
HStack {
Button("Salva") {
if let partitaSelezionata = partitaSelezionata {
// Se è stata selezionata una partita, aggiorna i suoi dati
if let index = partite.firstIndex(where: { $0.id == partitaSelezionata.id }) {
partite[index].idGiornata = Int(idGiornata) ?? 0
partite[index].dataPartita = dataPartita
partite[index].squadraCasa = squadraCasa
partite[index].golCasa = Int(golCasa) ?? 0
partite[index].squadraTrasferta = squadraTrasferta
partite[index].golTrasferta = Int(golTrasferta) ?? 0
}
} else {
// Altrimenti, aggiungi una nuova partita
aggiungiPartita(stagione: stagione)
}
// Chiudi il foglio di presentazione
mostraAggiungiPartita = false
// Resetta il campo di input
idGiornata = ""
dataPartita = Date()
squadraCasa = ""
golCasa = ""
squadraTrasferta = ""
golTrasferta = ""
}
.buttonStyle(.borderedProminent)
.disabled(idGiornata.isEmpty || squadraCasa.isEmpty || squadraTrasferta.isEmpty || golCasa.isEmpty || golTrasferta.isEmpty)
// Bottone Chiudi
Button("Chiudi") {
mostraAggiungiPartita = false
}
.buttonStyle(.borderedProminent)
}
}
.padding()
}
}
I'd like to insert a autocomplete function in the textfields "Squadra Casa" and "Squadra Trasferta", based on the list of Squadre contained in the class "Squadre" and filtered for a specific Stagione.
Has anybody of you made something similar? Do you have any suggestions or code example which I can use?
Thanks, A.