使用数组过滤firebase forEach列表



我目前正在尝试创建一些过滤器按钮,这将过滤从firebase获取的列表。

当前的foreach是这样的:

ForEach((session.jobs)
.filter({ "($0)".contains(searchText) || searchText.isEmpty })
//.filter({ "($0)".contains(searchText2) || searchText2.isEmpty })
) { job in

JobCardTemplate(job: job, session: self.session)
}

乔布斯模型:

struct JobData: Identifiable {
var id: String = UUID().uuidString
var creator : String?
var title : String?
var company : String?
var city: String?
var salary : String?
var key : String?
var logo : String?
var category : String?
var created : String?
}

过滤器按钮:

ScrollView(.horizontal, showsIndicators: false) {
HStack(spacing: 15) {
ForEach(session.categories.indices) { index in
Button(action: {
// What to perform
self.session.categories[index].selected.toggle()
if(session.categories[index].selected == true){
self.selected.append(session.categories[index].title!)
} else{
if let index2 = selected.firstIndex(of: (session.categories[index].title!)) {
selected.remove(at: index2)
}
}
print(selected)
}) {

HStack{
Image(systemName: (session.categories[index].icon!))
.foregroundColor(session.categories[index].selected ? Color.white : Color.black)
Text("(session.categories[index].title!)")
.foregroundColor(session.categories[index].selected ? Color.white : Color.black)
}
}
.padding(.all, 8)
.background(session.categories[index].selected ? Color.black : Color.white)
.cornerRadius(10)
.overlay(
RoundedRectangle(cornerRadius: 10)
.stroke(session.categories[index].selected ? Color.black : Color.black, lineWidth: 1)
)
}
}
.padding()
}

我也有一个搜索栏,但我需要它的工作方式,即使选择过滤器或没有。我试过从数组过滤,但我得到一个错误,说它不支持字符串,它需要字符串字符。

也许有人试过做类似的事情?

您的ForEach中的过滤器是错误的。这样写:

ForEach(session.jobs.filter { $0.title.contains(searchText) || $0.company.contains(searchText) || $0.creator.contains(searchText) }) { job in

对作业对象内的属性进行筛选,就像我刚才做的那样。

相关内容

  • 没有找到相关文章

最新更新