首页 > 解决方案 > 调用 Firebase fetch 方法时无法推断通用参数“T”

问题描述

我有这个功能:

func fetchMyData<T: Decodable> (completion: @escaping ([T]?) -> Void) {
    
    self.db
        .collection("someCollection")
        .addSnapshotListener { querySnapshot, error in
        guard let documents = querySnapshot?.documents else {
            completion(nil)
            return
            }
            let result = documents.compactMap { queryDocumentSnapshot -> T? in
                return try? queryDocumentSnapshot.data(as: T.self)
            }
            completion(result)
        }
    }

但是当我调用它时:

self.fetchMyData() { arr in if arr != nil {
    //
}}

我收到此错误消息(指向“self”):

无法推断通用参数“T”

我试图在整个地方强制转换类型,但没有任何帮助,所以我不确定如何帮助调用来识别 T 的类型。

标签: swiftfirebase

解决方案


协议无法自行确认。你必须指定。

fetchMyData() { (arr : [Test]?) in
   if arr != nil {
                
   }
}

这里测试是数据模型

struct Test: Decodable {
    
}

推荐阅读