我在viewController类之外声明了闭包,我在viewController类中创建了该闭包的一个变量,但它显示了此闭包缺少的默认初始值设定项的错误。
我理解变量和常量声明以及默认初始化的后果必须在声明时分配。但我无法理解我的闭包的默认初始化是什么,我尝试了一些技巧来解决它,但没有解决。
这是我的封闭声明
typealias completionBlock = (String) -> ()
这是我关闭的变量声明,它提示初始化它。
class ViewController: UIViewController {
var completionHandler: completionBlock = // What could be the default initializer to this closure
override func viewDidLoad() {
super.viewDidLoad()
}
}
每当我获得传递所需的值时,我想实现调用此块,与objective-c external completionBlock声明相同。
答案 0 :(得分:5)
您有3个选项
默认属性:
completionHandler
隐式解包可选 - 只有在您100%确定在调用var completionHandler: completionBlock!
之前设置了值时才执行此操作:
var completionHandler: completionBlock?
// later callable via
completionHandler?("hi")
“常规”可选
var files = DirInfo.GetFiles()
.Where(file => (file.CreationTime >= startDate && file.CreationTime <= endDate));
答案 1 :(得分:1)
我认为它应该是这样的?
var completionHandler: completionBlock = { stringValue in
// but your code here
}