Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在SwiftUI中安全地展开数据?_Swiftui - Fatal编程技术网

如何在SwiftUI中安全地展开数据?

如何在SwiftUI中安全地展开数据?,swiftui,Swiftui,我希望安全地展开数据(使用guard或任何其他方式),以便在SwiftUI中呈现我的视图,以下是我的代码: 我不想使用“?”和“空”,我想安全地打开我的包裹 dataModel.items[索引].name ,如果有什么,然后显示,否则什么也不做,正如您在屏幕截图中看到的那样,我们将使用此代码获得4个视图,但它应该是“数据1”和“数据2”的2个视图 PS:我很聪明,知道我可以用“”代替“空”,但“”甚至是一个视图,我不需要它 struct Data: Identifiable {

我希望安全地展开数据(使用guard或任何其他方式),以便在SwiftUI中呈现我的视图,以下是我的代码:

我不想使用“?”和“空”,我想安全地打开我的包裹

dataModel.items[索引].name

,如果有什么,然后显示,否则什么也不做,正如您在屏幕截图中看到的那样,我们将使用此代码获得4个视图,但它应该是“数据1”和“数据2”的2个视图

PS:我很聪明,知道我可以用“”代替“空”,但“”甚至是一个视图,我不需要它

    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()
            
        }
        }
    }

就像我的回答:

您可以尝试以下方法:

if let theName = dataModel.items[index].name {
    Text(theName).font(.title2).padding()
}