我对Swift相对较新,并且仍在掌握闭包的概念。 我已经阅读过这篇文章(Anonymous closure can not be used inside a closure that has explicit arguments)。 但是,答案是将过滤器从()更改为{},但我不知道如何将其实现到我的函数中。
<<< ImageRow()
{
$0.tag = "Image"
$0.title = "Choose your profile pic"
if let tutorPic = currentuser!.objectForKey("ProfPhoto") as! PFFile!
{
tutorPic.getDataInBackgroundWithBlock({(imageData:NSData?,error:NSError?)->Void in
if(error == nil)
{
let image = UIImage(data: imageData!)
print("YOOWAHH")
print(image)
print("***********")
self.imagez = image
print(self.imagez)
$0.value = imagez
}
})
}
}
错误位于第$0.value = imagez
行。
我从Parse下载了图像数据,并希望将其设置为我的表单的默认值。但是编译器说我已经有了显式参数,所以它不知道如何引用表单的参数。如何解决这个问题?
答案 0 :(得分:3)
问题在于,因为每个块都是单独处理以进行调度等,所以它不知道如何正确地将引用返回到$0
的另一个块。无论您是否明确定义了封闭块,编译器都会假设这是您在说$0
时所指的块。
要解决此问题,只需在您的热门栏中说:let myButton = $0
,然后参阅随附区块中的myButton
。
将来,如果您不知道块的形式应该是什么,只需重新写出函数调用,自动完成将恢复其余的块格式。