【问题标题】:Generic parameter 'T' could not be inferred when calling Firebase fetch method调用 Firebase fetch 方法时无法推断通用参数“T”
【发布时间】:2021-08-13 06:00:18
【问题描述】:

我有这个功能:

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 的类型。

【问题讨论】:

  • 明确指定类型参数:self.fetchMyData&lt;TReturn&gt;()?

标签: swift firebase


【解决方案1】:

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

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

这里Test是数据模型

struct Test: Decodable {
    
}

【讨论】:

  • 完美,它消除了错误。值得一提的是,我尝试过,但我错过了将其标记为可选
猜你喜欢
  • 2020-03-06
  • 2020-04-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-05-19
  • 1970-01-01
  • 1970-01-01
  • 2015-09-22
相关资源
最近更新 更多