无法调用非函数类型UIAlertAction的值

Evo*_*net 4 swift

我不确定这个功能有什么问题.我正在尝试提示用户是否要删除所选照片.

如果删除照片的功能返回错误,我想向用户显示该错误.

Xcode在errorController.addAction行上失败,消息"无法调用非函数类型UIAlertAction的值"

我正在使用Swift 2

@IBAction func deletePhoto(sender: AnyObject) {
    let alertController = UIAlertController(title: "Delete Photo", message: "Are you sure you want to delete this photo?", preferredStyle: .Alert)
    let okAction = UIAlertAction(title: "OK", style: .Default) { UIAlertAction in

        self.photoGateway!.delete(self.photo!.id!, completion: { (withError: Bool) -> Void in

            if (withError == true) {
                let errorController = UIAlertController(title: "Delete Failed", message: "blah", preferredStyle: UIAlertControllerStyle.Alert)
                //  The next line is causing the error
                errorController.addAction(UIAlertAction(title: "Ok", style: UIAlertActionStyle.Default, handler: nil))
                self.presentViewController(errorController, animated: true, completion: nil)
            } else {
                self.dismissViewControllerAnimated(true, completion: nil)
            }

        })

    }

    let cancelAction = UIAlertAction(title: "Cancel", style: .Cancel) { UIAlertAction in
        print("Cancelled")
    }

    alertController.addAction(okAction)
    alertController.addAction(cancelAction)
    self.presentViewController(alertController, animated: true, completion: nil)
}
Run Code Online (Sandbox Code Playgroud)

如果我拿出违规行,那么一切正常,只是用户无法解除警报

Evo*_*net 23

固定它.更改:

errorController.addAction(UIAlertAction(title: "Ok", style: UIAlertActionStyle.Default, handler: nil))
Run Code Online (Sandbox Code Playgroud)

至:

errorController.addAction(UIKit.UIAlertAction(title: "Ok", style: UIAlertActionStyle.Default, handler: nil))
Run Code Online (Sandbox Code Playgroud)

  • 很酷,它有效...但是......为什么我们甚至需要这样做?除了在一个特定的地方,它在无数个地方的代码中没有范围前缀. (4认同)
  • 谢谢你的回答.我还想知道为什么当在一个处理器外部不需要时,这会在处理程序内部产生差异. (2认同)