我想在长期操作完成后返回一些值.但此外,我想分裂逻辑和gui.
例如; 我有两节课
所以,以前在Objective-C中我只是在SomeServices中添加一个方法,如下所示:
(void)getDataFromService:(void (^)(NSArray *, NSError *))completionBlock{ ...... }
Run Code Online (Sandbox Code Playgroud)
在这个方法中,我只是调用completionBlock(myData, myError)
将我的值返回到tableviewcontroller.
我必须在SomeServices.swift中定义的等效闭包是什么以及如何在MyTableViewController中调用它?
我知道如何调用这样的简单闭包:
....({
responseData, error in
if(!error){
//Do something
}
})
Run Code Online (Sandbox Code Playgroud)
但我没有任何想法如何定义一个与completionBlock等效的闭包.
任何帮助,将不胜感激
Sam*_*Sam 14
关闭的好处是,你可以传递你想要的一切.方法或功能 - 没关系.
您可以在参数中传递函数并调用它.
func someFunctionThatTakesAClosure(completionClosure: () -> ()) {
// function body goes here
if(error = false) {
completionClosure()
}
}
//Call it
someFunctionThatTakesAClosure({
//Completions Stuff
println("someFunctionThatTakesAClosure")
});
Run Code Online (Sandbox Code Playgroud)
摘录自:Apple Inc."The Swift Programming Language."iBooks.https://itun.es/ch/jEUH0.l
归档时间: |
|
查看次数: |
12387 次 |
最近记录: |