I want to send empty text inside the searchText to AuthorService() if button value .isCancel is true. So that my author search result will be cleaned.
import SwiftUI
import Combine
struct AuthorSearchBar: View {
@StateObject var service = AuthorService()
@Binding var isCancel: Bool
@State var emptyText = ""
var body: some View {
VStack(spacing: 0) {
HStack {
Image(systemName: "magnifyingglass")
if isCancel == false{
TextField("Search", text: $service.searchText)
} else if isCancel {
TextField("Search", text: $service.searchText = "")
//Cannot assign to property: '$service' is immutable
//Cannot assign value of type 'String' to type 'Binding<String>'
//Cannot convert value of type '()' to expected argument type 'Binding<String>'
}
.padding()
.onReceive(Just( self.isCancel ? emptyText : service.searchText), perform: { _ in
service.fetchData()
})
}
}
}
My service fetchData() gets searchText parameter as below.
so I want to send "" to fetchData if .isCancel is true.
class AuthorService: ObservableObject {
@Published var searchText : String = ""
func fetchData() {
let parameters = ["index": "authors", "query": "\(searchText)" ]