Быстрое изменение параметров обратного вызова в clousure - PullRequest
0 голосов
/ 30 марта 2020

У меня есть метод generi c, который выбирает документ из Firestore и возвращает документ или ошибку в случае сбоя. Я пытаюсь передать два параметра в качестве параметров обратного вызова в замыкании.

Проблема возникает, когда я пытаюсь вызвать его.

fetchDocument(documentReference: documentReference) { (_, Error?) in
   //
}

Вместо получения Document? все, что я получаю, это подчеркивание Я получаю Error? так, как должен, но не получаю Document?

Я хочу получить (Document?, Error?) вместо (_, Error?)

Есть идеи почему?

func fetchDocument<Document: DocumentProtocol>(documentReference: DocumentReference, completion: @escaping (Document?, Error?) -> Void) {
    documentReference.getDocument { (document, error) in
        if let document = document, document.exists {
            completion(Document.init(document: document), nil)
        } else {
            completion(nil, error)
        }
    }
}
...