Ios 在SwiftUI中过滤数组

Ios 在SwiftUI中过滤数组,ios,swift,swiftui,Ios,Swift,Swiftui,我试图在SwiftUI中实现一个搜索栏,我想在用户在上面写入文本时过滤一个数组 不幸的是,它不起作用,我不知道为什么 代码如下: import SwiftUI struct ContentView: View { @ObservedObject var jobsViewModel = JobsviewModel() @State private var isEditing = false @Binding var searchText: String var b

我试图在SwiftUI中实现一个搜索栏,我想在用户在上面写入文本时过滤一个数组

不幸的是,它不起作用,我不知道为什么

代码如下:

import SwiftUI

struct ContentView: View {
    @ObservedObject var jobsViewModel = JobsviewModel()
    @State private var isEditing = false
    @Binding var searchText: String
    var body: some View {
       List {
            ForEach(jobsViewModel.jobs.filter {
                searchText.isEmpty ? true : $0.title.localizedCaseInsensitiveContains(searchText)
            }, id: \.self) {
                JobView(job: $0)
            }
        }
        .onAppear {
            jobsViewModel.fetchJobs()
        }
   }
我尝试在包含
searchText.isEmpty的行中设置断点?true:$0.title.localizedCaseInsensitiveContains(searchText)
但应用程序从未停止过


提前谢谢

我对searchText属性使用@State而不是@Binding,并且过滤工作正常

@State private var isEditing = false
@State var searchText: String = ""
var body: some View {
    VStack {
        HStack {
            ...

用@State works替换@Binding

该列表工作正常且可见。当文本在Bar中更改时,它不会更改。你是对的,那部分一定是我的预览中的问题。但是视图使用@State对我来说很好,所以如果这个更改对你不起作用,那么问题一定与你的视图模型有关,因为我使用了一个硬编码数组,而不是它。你为什么要尝试重新发明轮子?将
UISearchBar(控制器)
连接到SwiftUI非常容易。