You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SwiftUI中如何从数组提取并显示单组数据

SwiftUI中如何从数组提取并显示单组数据

嘿,别慌!新手问题太正常啦,我来帮你搞定这个~

你现在用List遍历了整个数组,所以才会显示所有的预约记录。要只显示单组数据,其实很简单,直接从数组里取出你想要的那一项就行,比如第一个元素,然后把它的属性拼到文本里就好。

不过要注意一个关键点:数组可能是空的(比如还没添加任何预约的时候),直接取元素会崩溃,所以一定要做安全判断。

给你修改好的代码,替换掉原来的List部分就行:

struct Home: View {
    @ObservedObject var visits = Visits()
    
    var body: some View {
        NavigationView {
            VStack {
                // 先判断数组是否有元素,安全取出第一个
                if let firstAppointment = visits.items.first {
                    Text("You have a \(firstAppointment.visitType) appointment on \(firstAppointment.visitDate, style: .date) for \(firstAppointment.medCategory).")
                        .font(.headline)
                } else {
                    // 如果还没有预约,显示提示
                    Text("No appointments have been added yet.")
                        .font(.headline)
                }
            }
            .navigationTitle("My Appointments") // 可以加个导航标题让界面更完整
        }
    }
}

简单解释下:

  • visits.items.first会返回数组的第一个元素(如果数组不为空),用if let做安全解包,避免空数组导致的崩溃
  • 解包成功后,直接用firstAppointment的visitType、visitDate、medCategory这三个属性拼接文本就好
  • 如果数组为空,就显示提示文字,让界面体验更友好

要是你想显示数组里特定位置的元素(比如第2个,索引是1),可以这么写,但同样要先判断数组长度够不够:

if visits.items.count > 1 {
    let secondAppointment = visits.items[1]
    Text("You have a \(secondAppointment.visitType) appointment on \(secondAppointment.visitDate, style: .date) for \(secondAppointment.medCategory).")
        .font(.headline)
}

这样就不用再依赖List来显示内容啦,直接提取单组数据展示就ok~

备注:内容来源于stack exchange,提问作者Phillip Hunter

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.21 14:14:39