swift - 调用 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 的类型。
解决方案
协议无法自行确认。你必须指定。
fetchMyData() { (arr : [Test]?) in
if arr != nil {
}
}
这里测试是数据模型
struct Test: Decodable {
}
推荐阅读
- php - 将项目 Laravel 上传到共享主机时出现“页面已过期”错误(Cpanel)
- javascript - 根据条件计算项目
- u-sql - STORE_PRIMARYINPUTSUNAVAILABLEBEYONDLIMIT 是什么意思?
- mysql - 如何获得评论数量即使评论数量等于0
- angular - “错误类型错误:无法读取未定义的属性‘值’”
- node.js - 如何在某些非云环境中打包和部署 Node/Express Web 应用程序?
- javascript - 如何在 phpunit + selenium 测试平台上获取 ajax 请求状态代码和响应数据?
- apache-spark - 我们可以将 Elasticsearch 视为 Spark Streaming 的状态维护数据存储吗?
- acumatica - 在查找屏幕中添加选中的复选框列并启用多选
- python - python:从.txt中读取并判断txt文件中的新字符串