English 中文(简体)
Getting Argument passed to call that takes no arguments error when trying to search for users in Firebase userlistview with Swift
原标题:

In my userlistview I attached the user model to search users in the search bar from Firebase but my search bar is showing up as empty I am not able to view or search for the users in the search bar from firebase so I set a breakpoint and I received this error.

self.users = documents.compactMap({ try? $0.data(as: User.self)})

Argument passed to call that takes no arguments
Cannot convert value of type () to closure result type User?

How do I fix this code and how can I properly rewrite this code to be able to search for my users that is saved in firebase ?

import FirebaseFirestore
import FirebaseFirestoreSwift
import Firebase

class UserViewModel: ObservableObject{
    @Published var users = [User]()
    
    init() {
        fetchUsers()
    }
    
    func fetchUsers(){
        Collection_Users.getDocuments{ snapshot, _ in
            
            guard let documents = snapshot?.documents else{return}
                        self.users = documents.compactMap({ try? $0.data(as: User.self)})
            
            print(self.users)
                    }
                }
    func filteredUsers(_ query: String ) -> [User] {
        let loweredCase = query.lowercased()
        return users.filter({$0.username.contains(loweredCase)})
    }
    }

import SwiftUI

struct UserList: View {
    @ObservedObject var viewModel: UserViewModel
    @Binding var searchText: String
    
    var users: [User] {
        return searchText.isEmpty ? viewModel.users : viewModel.filteredUsers(searchText)
    }
    
    var body: some View {
        ScrollView {
            LazyVStack {
                ForEach(users) { user in
                    NavigationLink(
                        destination:ProfileHead(user: user),
                        label: {
                            UserCell(user: user)
                                .padding(.leading)

                        })
                }
            }
        }
    }
}
struct Search: View {
        @State var searchText = ""
        @State var inSearchMode = false
        @ObservedObject var newModel = UserViewModel()
        var body: some View {
            ScrollView{
                SearchBar(text: $searchText, isEditing: $inSearchMode)
                    .padding()
                
                ZStack{
                    if inSearchMode {
                        UserList(viewModel: newModel, searchText: $searchText)
                    }else{
                        GridView()
                    }
问题回答

暂无回答




相关问题
List Contents of Directory in a UITableView

I am trying to list the contents of Ringtones directory in a TableView, however, I am only getting the last file in the directory in ALL cells, instead of file per cell. This is my code: - (...

iPhone NSUserDefaults persistance difficulty

In my app i have a bunch of data i store in the NSUserdefaults. This information consists of an NSObject (Object1) with NSStrings and NSNumbers and also 2 instances of yet another object (Object2). ...

Writing a masked image to disk as a PNG file

Basically I m downloading images off of a webserver and then caching them to the disk, but before I do so I want to mask them. I m using the masking code everyone seems to point at which can be found ...

Resize UIImage with aspect ratio?

I m using this code to resize an image on the iPhone: CGRect screenRect = CGRectMake(0, 0, 320.0, 480.0); UIGraphicsBeginImageContext(screenRect.size); [value drawInRect:screenRect blendMode:...

Allowing interaction with a UIView under another UIView

Is there a simple way of allowing interaction with a button in a UIView that lies under another UIView - where there are no actual objects from the top UIView on top of the button? For instance, ...

热门标签