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
相关产品推荐
相关产品推荐

