【问题标题】:Argument passed to call that takes no arguments.. Firebase传递给不带参数的调用的参数.. Firebase
【发布时间】:2021-08-20 04:14:52
【问题描述】:

不知道为什么我得到这个..任何建议将不胜感激!

我在使用 Firebase pod 和 Firebase 包时遇到了原始编码问题。所以我从头开始,因为它没有自行修复。现在我明白了。我不知道如何解决它.

static func fetchUsers() -> AnyPublisher<[UserProfile], Error> {
        Future< [UserProfile], Error > { promise in
            self.db.collection("Users")
                .getDocuments { (snapshot, error) in
                    if let error = error {
                        promise(.failure(error))
                        return
                    }
                    
                    guard let snapshot = snapshot else {
                        promise(.failure(FirebaseError.badSnapshot))
                        return
                    }
                    
                    var users = [UserProfile]()
                    snapshot.documents.forEach { document in
                        print(users.count)
                        
                        if let user = try? document.data(as: UserProfile.self){
                            if users.contains(where: { $0.id == user.id}) {return}
                            users.append(user)
                        }  else {
                            print("Not working")
                        }
                    }
                    
                    promise(.success(users))
                    
                }
        }
        .eraseToAnyPublisher()
    }

【问题讨论】:

    标签: xcode firebase google-cloud-firestore swiftui combine


    【解决方案1】:

    我相信这是您所追求的语法:

    var users = [UserProfile]()
    
    users = snapshot.documents.compactMap { (document) -> UserProfile? in
        if users.contains(where: { $0.id == user.id}) {
            return nil
        } else {
            return try? document.data(as: UserProfile.self)
        }
    }
    

    另外请注意,当您在 Swift 中迭代某些内容并在迭代中遇到错误条件时,return 将返回更大范围之外,而不仅仅是该迭代。因此,请使用continue

    for x in y {
        guard x > 0 else {
            continue // continues loop
        }
        // ...
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多