我想在长期操作完成后返回一些值。
但此外我想将逻辑和图形用户界面分开。
例如;我有两节课
- SomeServices.swift 有一个名为“getDataFromService...”的方法
- MyTableViewController.swift 将显示“getDataFromService”的结果
因此,之前在 Objective-C 中,我只是在 SomeServices 中添加了一个方法,如下所示:
(void)getDataFromService:(void (^)(NSArray *, NSError *))completionBlock{ ...... }
在这个方法中我刚刚调用了completionBlock(myData, myError)
将我的值返回给 tableviewcontroller。
我必须在 SomeServices.swift 中定义的等效闭包是什么以及如何在 MyTableViewController 中调用它?
我知道如何调用像这样的简单闭包:
....({
responseData, error in
if(!error){
//Do something
}
})
但我不知道如何使用completionBlock 等效项定义闭包。
任何帮助,将不胜感激
闭包的好处是,你可以传递你想要的一切。方法或函数——这并不重要。
您可以在参数中传递一个函数并调用它。
func someFunctionThatTakesAClosure(completionClosure: () -> ()) {
// function body goes here
if(error = false) {
completionClosure()
}
}
//Call it
someFunctionThatTakesAClosure({
//Completions Stuff
println("someFunctionThatTakesAClosure")
});
摘自:Apple Inc.“Swift 编程语言”。 iBooks。https://itun.es/ch/jEUH0.l https://itun.es/ch/jEUH0.l
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)