Ios 在SwiftUI中过滤数组
我试图在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
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非常容易。