在下面的代码中(使用Parse库),我有:
query.findObjectsInBackgroundWithBlock({(objects: [AnyObject]?, error: NSError?) -> Void in
// yada yada
})
代码中是否需要-> Void in
(相反,我还能使用其他东西吗?删除它会在Xcode中引发错误。)
我非常是Swift的新手,所以这可能是一个愚蠢的问题......
答案 0 :(得分:3)
in
行是如何将参数输入块中的:
(objects: [AnyObject]?, error: NSError?) -> Void in
如果以其他方式了解 types ,您可以省略他们:
objects, error in
但除非您在代码中以其他方式选取参数(in
和$0
),否则您无法完全省略$1
行,这会使您的代码变得困难了解。最好保留in
行,以便了解参数是什么。
答案 1 :(得分:0)
这个-> Void in
说封闭没有返回任何内容,in
后面的内容是封闭的主体。 -> Void
可以删除,因为Swift非常擅长推断类型。 in
是必要的。
in
关键字引入了闭包主体的开头。这个关键字表示闭包的参数和返回类型的定义已经完成,闭包的主体即将开始。
您可以在此处阅读有关闭包的更多信息:https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/Closures.html