当前位置:  开发笔记 > IOS > 正文

如何在Swift中使用两个闭包作为参数创建函数?

如何解决《如何在Swift中使用两个闭包作为参数创建函数?》经验,为你挑选了1个好方法。

我需要将这样的func从Objective-C转换为Swift语言。但是找不到示例,也无法获取如何在Swift中将2个闭包发送到func中。

例如,Objective-C中的原始功能:

- (void)getForDemoDataWithToken:(Token *)token
onSuccess:(void(^)(NSArray *demoData))success
onFailure:(void(^)(NSError *error))failure {
}

我知道发送1个闭包作为参数:

getForDemoDataWithToken(token){(成功:字符串)->无效

//这里有一些代码

打印(成功)

}

但是,如何发送两个闭包?

谢谢



1> Luca Angelet..:

那这个呢?

宣言

func getForDemoDataWithToken(
    token: Token,
    onSuccess: (demoData:NSArray?) -> (),
    onFailure: (error:NSError?) -> ()) {

}

调用方式

getForDemoDataWithToken(Token(),
    onSuccess: { (demoData) -> () in

    },
    onFailure: { (demoData) -> () in

    }
)

更快捷的方法

我通常会在Swift代码中只使用一个闭包。因此,您可以只拥有2个distinct onSuccessonFailureclosures completion

接下来,我们应该记住它NSArray与Swift兼容,但这不是使用数组的最快捷方式。

让我们看一个应用上述两个概念的示例。

func getForDemoData(token:Token, completion:(data:[Foo]?, error:NSError?) -> ()) {

}

您可以使用trailing closure语法来调用它。

getForDemoData(Token()) { (data, error) -> () in
    if let data = data where error == nil {
        // success!
    } else {
        // oh no... something wrong here
    }
}

推荐阅读
放ch养奶牛
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有