Home > Net >  iOS SwiftUI - Cannot pass function of type '() async -> Void' to parameter expecting sy
iOS SwiftUI - Cannot pass function of type '() async -> Void' to parameter expecting sy

Time:11-16

                        TextField("search", text: $searchText)
                            .accentColor(Color("ClickableLink"))
                            .foregroundColor(.white)
                            .focused($focusedField, equals: .field)
                            .onAppear {
                                self.focusedField = .field
                            }
                            .onSubmit {
                                loadinglayout = true
                                
                                do {
                                    try await getMemes()
                                }
                                catch {
                                    print(error)
                                }
                            }

I get

"Cannot pass function of type '() async -> Void' to parameter expecting synchronous function type"

inside onSubmit.

So far the

do 

method solved this kind of issues, why not here? I have absolutely no idea what else I could try

CodePudding user response:

The problem is that you are trying to call an async method from a synchronous method. onSubmit is synchronous, while getMemes is async.

You need to wrap async methods in a Task if you want to call them from a synchronous context.

.onSubmit {
    loadinglayout = true
    Task {
        do {
            try await getMemes()
        }
        catch {
            print(error)
        }
    }
}                            
  • Related