我的问题只是关于它的关闭部分.
1)我知道我可以写:{alert in println(“Foo”)}或{_ in println(“Foo”)}但我不能写{println(“Foo”)}.在here评论中,它被解释是因为您需要处理参数操作.
这是否意味着因为处理程序是类型(UIAlertAction) – >无效)?我必须总是捕获传递的alertAction吗?
2)
我也阅读了this,答案基本上是说你可以传递一个函数作为你的参数,但函数应该采用UIAlertAction类型的东西 – > Void,我写道:
private func anything(action : UIAlertAction) { print("hello") }
然后写下我的alertaction:
let anotherAction = UIAlertAction(title: "hi",style: UIAlertActionStyle.Default,handler: anything(action)) // error: Use of unresolved identifier 'action'
困惑为什么我得到那个错误
3)
在评论中它还说:但除此之外,你不必在swift中编写UIAlertActionStyle.Default. .Default也有效
我尝试写不使用该样式,因此它将默认为.Default
let sendLogAction = UIAlertAction(title: "Log") { action in print("goodbye")}
但后来我收到以下错误:
‘(title: String,(_) -> ())’ (aka ‘(title: String,_ -> ())’) is not
convertible to ‘(title: String?,style: UIAlertActionStyle,handler:
((UIAlertAction) -> Void)?)’ (aka ‘(title: Optional,style:
UIAlertActionStyle,handler: Optional ()>)’),tuples
have a different number of elements
4)
还看了this的答案.我不明白为什么我们需要传递警报它没有意义.这不像我们不知道警报的类型是什么……我们还没有定义它的类型吗?!!任何人都可以解释一下通过行动本身会有用的地方,我的意思是我们可以用它做什么?
我知道这是4个问题,但我认为这只是一个基本问题.我有广泛的read,在我正在工作和在游乐场玩的项目中使用了闭包/完成处理程序,但我仍感到困惑.