在下面函数的第三行,出现以下错误:
无法在当前上下文中推断闭包类型
我该如何解决?
func fetchAllUsersImages() {
print("inside func")
self.ref.child("Posts").child(self.userID).child(self.postNum).observe(.childAdded, with: { snapshot in //error here
var images: [URL] = []
if let snapShotValue = snapshot.value as? [String: String] {
for (_, value) in snapShotValue {
if let imageURL = URL(string: value) {
print(imageURL, "image url here")
let imageAsData = try Data(contentsOf: imageURL)
let image = UIImage(data: imageAsData)
let ImageObject = Image()
ImageObject.image = image
self.arrayOfImgObj.append(ImageObject)
self.tableView.reloadData()
}
}
}
})
}
它不推断闭包类型的原因是因为try
未处理该语句。这意味着关闭预期会"catch"
出现错误,但是在您的情况下,您忘记了do-try- catch
规则。
因此,您可以尝试使用以下答案来捕获您的错误:
do {
let imageAsData = try Data(contentsOf: imageURL)
let image = UIImage(data: imageAsData)
let ImageObject = Image()
ImageObject.image = image
self.arrayOfImgObj.append(ImageObject)
} catch {
print("imageURL was not able to be converted into data") // Assert or add an alert
}
然后,您可以断言错误(用于测试),或者我个人会设置警报。
这样,应用程序不会崩溃,而是通知用户。我发现这在旅途中 非常 有用,而且我的设备未插入电源-
因此我可以看到错误消息,而不是完全崩溃,不知道发生了什么。
我正在尝试获取部分应用的函数的列表,如下所示: 编译器向我产生一个错误: 错误[E0277]:类型std::vec::Vec的值 随后的尝试也没有成功: 1. 也只有这一次尝试最终成功了! 为什么在动态闭包方面类型推断如此糟糕? 为什么在第一次尝试中不起作用? 有没有更好的方法来利用类型推理来表达这样的想法?
我编写了一些代码来验证用户是否可以登录到酒店预订平台&我还添加了一个验证步骤。我在方法上得到一个错误。代码中的其他内容都很好。 我做了一些研究,以寻求可能的解决办法。 下面是我在StackOverflow上找到的解决方案:Assert方法错误 删除绑定后,我得到了同样的错误-Microsoft.VisualStudio.TestTools.UnitTesting;使用nunit.framework
为什么可以推断闭包表达式的参数类型和返回类型,而不是rust中的函数?
我的分类测试应用程序有一个问题,我使用了一个比较器。我收到一条信息: 线程“主”java.lang 中的异常:未解决的编译问题:无法推断排序器的类型参数 对于该代码: 分拣机类: 可比接口: id比较器类: 比较器接口: 这样用有什么错?我怎样才能做得更好?
这段代码适用于字符串和整数,但不适用于浮点。我想知道为什么? 这是课堂 这是主要方法