Неоднозначная ссылка на элемент dataTask (с: completionHandler) - PullRequest
0 голосов
/ 09 июля 2020

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

import Foundation
import Firebase

class Service {
    let db = Firestore.firestore()
    static let shared = Service()

 func fetchClient(completion: @escaping ([Client]) -> ()) {
    var clientArray = [Client]()
    
    let clients = db.collection("clients")
    
    **URLSession.shared.dataTask(with: clients) { (data, response, error) in**
        
        // handle error
        if let error = error {
            print("Failed to fetch data with error: ", error.localizedDescription)
            return
        }
        
        guard let data = data else {return}
        
        do {
            guard let resultArray = try JSONSerialization.jsonObject(with: data, options: []) as? [AnyObject] else
            {return}
            
            for (key, result) in resultArray.enumerated() {
                if let dictionary = result as? [String: AnyObject] {
                    let client = Client(id: key, dictionary: dictionary)
                    clientArray.append(client)
                }
                
                completion(clientArray)
            }
            
        } catch let error {
            print("Failed to create JSON with error: ", error.localizedDescription)
        }
    }.resume()
    }
}

Кажется, все работает нормально, если я использую URL с базой данных в форме JSON, а с базой данных firestore не работает? Я ** выделил ** строку, в которой возникает ошибка.

Любая помощь очень ценится!

1 Ответ

1 голос
/ 09 июля 2020

Если вы видите подпись

URLSession.shared.dataTask(with: <URLRequest>)
URLSession.shared.dataTask(with: <URLRequest>)

Для них требуется параметр типа URLRequest, и я вижу, что вы не передаете этот тип. Вот почему ошибка.

Вы передаете let clients = db.collection("clients"), который не URLRequest

**URLSession.shared.dataTask(with: clients) { (data, response, error) in**

Итак, вам нужен проход правильного типа.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...