Je veux déballer les données en toute sécurité (avec garde ou de toute autre manière) pour rendre mes vues dans SwiftUI, voici mon code :

Je ne veux pas utiliser "???" et "Vide", je veux déballer en toute sécurité mon

dataModel.items[index].name

, s'il y a quelque chose alors montrez sinon ne faites rien, comme vous pouvez le voir dans la capture d'écran, nous aurons 4 vues avec ce code, mais il devrait y avoir 2 vues pour "Data 1" et "Data 2"

PS : je suis assez malin pour savoir que je peux utiliser "" au lieu de "Vide", mais "" est même une vue, et je n'en ai pas besoin.

    struct Data: Identifiable
{
    let id  = UUID()
    var name: String?
}

let Data1 = Data(name: "Data 1")
let Data2 = Data(name: "Data 2")
let Data3 = Data()
let Data4 = Data()

class DataModel: ObservableObject
{
    @Published var items: [Data] = [Data1, Data2, Data3, Data4]
}



struct ContentView: View
{
    
    @StateObject var dataModel = DataModel()
    
    var body: some View
    {
        
        ForEach(dataModel.items.indices, id: \.self) { index in

            Text(dataModel.items[index].name ?? "Empty")
                .font(.title2)
                .padding()
            
        }
        }
    }

enter image description here

0
user 2 nov. 2020 à 02:39

1 réponse

Meilleure réponse

Comme ma réponse de : Pouvez-vous spécifier un "Où" dans une instruction SwiftUI ForEach ?

Vous pouvez essayer quelque chose comme ceci:

if let theName = dataModel.items[index].name {
    Text(theName).font(.title2).padding()
}
0
workingdog 1 nov. 2020 à 23:59