SwiftUI开发中无法访问外部Swift文件模型参数问题求助
问题根因
@Published var serate = [SerateModel]()是SerateModel类型的数组,而非单个模型对象,直接对数组调用image等属性自然不生效,这也是你收到Value of type '[SerateModel]' has no member 'image'报错的直接原因- 你的
SerateModel中定义的属性名是nomeSerata、autoreSerata、immagineSerata,代码中使用的name、author、image和模型属性不匹配,就算取到单个元素也会报错 - 额外注意:你贴出的
FirestoreManager代码末尾缺少两个右大括号(分别对应fetchData函数和类本身),需要补全否则会编译报错
修复方案
你需要遍历serate数组,针对每个数组元素渲染对应的卡片,同时使用正确的属性名,修复后的CategoryView代码如下:
import SwiftUI struct CategoryView: View { @ObservedObject private var fire = FirestoreManager() var body: some View { ScrollView(.horizontal, showsIndicators:false){ HStack { // 遍历数组生成卡片 ForEach(fire.serate) { serateItem in cardCategoryView( image: serateItem.immagineSerata, title: serateItem.nomeSerata, author: serateItem.autoreSerata ) } } .padding(EdgeInsets(top: 0, leading: 20, bottom: 0, trailing: 10)) } .onAppear() { self.fire.fetchData() } } }
如果仅需要访问数组中特定位置的元素,建议使用安全下标避免数组为空时崩溃,示例:
// 取数组第一个元素的图片属性,数组为空时返回空字符串 let firstImage = fire.serate.first?.immagineSerata ?? ""
内容的提问来源于stack exchange,提问作者Fabrizio Rocco
相关产品推荐
相关产品推荐

