Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Search SwiftUI搜索栏功能通过结构数组进行搜索_Search_Swiftui - Fatal编程技术网

Search SwiftUI搜索栏功能通过结构数组进行搜索

Search SwiftUI搜索栏功能通过结构数组进行搜索,search,swiftui,Search,Swiftui,我想在listview上实现搜索栏功能,以下是我的当前代码: Section(header: SearchBar(text: self.$searchQuery)) { List(fetcher.user) { user in HStack() { Text(user.name) } } } 其中用户声明为@Publ

我想在listview上实现搜索栏功能,以下是我的当前代码:

Section(header: SearchBar(text: self.$searchQuery)) {

            List(fetcher.user) { user in

                HStack() {

                    Text(user.name)

                }

            }

        }
其中用户声明为
@Published var user=[user]()


如何实现搜索功能?我看过一些视频,但它们的用例比我的要简单得多,因为我试图通过结构数组执行搜索。

我会使用
ObservieObject
执行搜索逻辑:

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
    }
}
它是一个可以向侦听器发布值的类,在本例中,它将成为您的SwiftUI视图

然后你可以这样使用它:

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)
                }
            }
        }
    }
}
如果你指的是标准的搜索栏,那么这个主题应该很有帮助——这个解决方案实际上是独立于平台的。