[英]Search through Array from Data Model in SwiftUI
我無法解決的另一個棘手的 SwiftUI 問題!
我在一個視圖中有 2 個列表,每個列表都從數據模型結構中讀取。 當在第一個列表中選擇一行時,我正在使用所選行的標題更新@State
。
在我的第二個列表中,數據模型有一個數組,該數組可能與更新后的@State
的標題匹配,也可能不匹配。 我正在嘗試搜索數組以查看它是否與新選擇的@State
字符串匹配,並且僅在匹配時才顯示該行,但我無法弄清楚如何搜索每一行的每個數組。 如何訪問數組以查看它是否與@State
匹配?
我沒有包括 2 行視圖ApplicationsListRow
和ProductListRow
因為它們是簡單的 HStack,它們只是從數據模型中獲取標題。
這是我對 2 列表的看法:
struct ProductListTabApplications: View {
@State private var selectedOption = "Food"
var applications: [ApplicationModel] = applicationData
var products: [ProductModel] = productData
var body: some View {
HStack {
List(){
ForEach(applications) { item in
Button(action: {
self.selectedOption = item.title
}) {
ApplicationsListRow(application: item)
}
}
}
List{
ForEach(products) { item in
NavigationLink(destination: ProductTabView(product: item)) {
ProductListRow(product: item)
}
}
}
}
}
}
我曾嘗試在第二個列表中使用 for 循環和 if 語句,但我無法找到訪問數組以查看它是否存在的方法。 這是我嘗試過的示例之一:
ForEach(products) { item in
ForEach(item) { application in
if item.application[application] == selectedOption {
// list items
}
}
}
簡化的數據模型:
struct ProductModel: Identifiable {
var id = UUID()
var title: String
var application: [String]
}
簡化結構:
let productData: [ProductModel] = [
ProductModel(
title: "product1",
application: ["Food","Metals","Beverage"]
),
ProductModel(
title: "product2",
application: ["Beverage"]
),
]
您可以使用filter
在列表中查找匹配項。
例子:
let matchedItems = products.filter {
product in
let list = product.application
for item in list {
if item == selectedOption {
return true
}
}
return false
}
現在您擁有所有在其應用程序數組中具有匹配字符串的產品。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.