匿名闭包参数不能在具有显式参数的闭包内使用

时间:2016-03-19 06:07:34

标签: ios swift parse-platform closures

我对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下载了图像数据,并希望将其设置为我的表单的默认值。但是编译器说我已经有了显式参数,所以它不知道如何引用表单的参数。如何解决这个问题?

1 个答案:

答案 0 :(得分:3)

问题在于,因为每个块都是单独处理以进行调度等,所以它不知道如何正确地将引用返回到$0的另一个块。无论您是否明确定义了封闭块,编译器都会假设这是您在说$0时所指的块。

要解决此问题,只需在您的热门栏中说:let myButton = $0,然后参阅随附区块中的myButton

将来,如果您不知道块的形式应该是什么,只需重新写出函数调用,自动完成将恢复其余的块格式。