Я бы использовал ObservableObject
для выполнения поиска c:
class SearchHandler: ObservableObject {
var searchText: String = "" {
didSet {
search()
}
}
// Your array, replace String with your type
@Published var resultObjs: [String] = []
// Your initial array, replace String with your type
var allObjs: [String]
init(allObjs: [String]) {
self.allObjs = allObjs
}
func search() {
// Write all your searching code here
// Use the searchText variable to filter out object
// from allObjs and write them into resultObjs
}
}
Это класс, в котором вы можете публиковать sh значения для слушателей, в этом случае это будет Ваш SwiftUI View.
Тогда вы можете использовать это так:
struct ContentView: View {
// Replace the empty array with your initial data
@ObservedObject var searchHandler = SearchHandler(allObj: [])
var body: some View {
Section(header: SearchBar(text: self.$searchHandler.searchText)) {
List(self.$searchHandler.$resultObj) { user in
HStack() {
Text(user.name)
}
}
}
}
}