неразрешенный идентификатор "завершение" - PullRequest
0 голосов
/ 25 марта 2019

У меня есть некоторый код, который я использовал в другом месте в проекте, и изменил его для получения пользовательских данных, однако есть ошибка, говорящая, что завершение - это неразрешенный идентификатор, для которого я не могу найти решение.

Я попытался добавить блок завершения к самому вызову и прочитал документацию Firebase, чтобы попытаться найти решение, которое, как кажется, ничего не работает.

func observeCurrentUser() {
    guard let currentUser = Auth.auth().currentUser else {
        return
    }

    CURRENT_USERS_REF?.child(currentUser.uid).observeSingleEvent(of: .value, with: {
        snapshot in
            if let dict = snapshot.value as? [String: Any] {
                let user = User.transformUser(dict: dict)
                completion(user)
            }
    })
}

Ответы [ 2 ]

1 голос
/ 25 марта 2019

Вам нужно добавить замыкающее замыкание (завершение), так как ваш текущий оператор completion(user) показывает, что вы его не добавили

func observeCurrentUser(completion:@escaping((User?) -> ())) {
    guard let currentUser = Auth.auth().currentUser else {
        completion(nil)
        return
    }

    CURRENT_USERS_REF?.child(currentUser.uid).observeSingleEvent(of: .value, with: {
        snapshot in
            if let dict = snapshot.value as? [String: Any] {
                let user = User.transformUser(dict: dict)
                completion(user)
            }
    })
}
0 голосов
/ 25 марта 2019

Вы должны объявить завершение в качестве параметра в вашем методе, а затем указать dataType содержимого завершения.

func observeCurrentUser(completion: @escaping (_ user: UserModel )->(Void)) {
    guard let currentUser = Auth.auth().currentUser else {
        return
    }

    CURRENT_USERS_REF?.child(currentUser.uid).observeSingleEvent(of: .value, with: { snapshot in
        if let dict = snapshot.value as? [String: Any] {
            let user = User.transformUser(dict: dict)
            completion(user)
        }
    })
}
...