' Call中的额外争论'在Swift中完成调用

时间:2016-04-23 21:19:25

标签: swift closures tuples

我试图在完成一个函数时返回一个简单的元组,如下面的代码所示:

func meditatorForId(id:Int, completion:((Meditator, Int)? -> Void)){
    var counter:Int=0
    for meditator in SanghaModelProvider.sharedProvider().meditatorsArray{
        if meditator.id == id{
            completion(meditator, counter)
            return
        }
        counter+=1
    }
    completion(nil)
}

然而,我在电话中得到了额外的争论。在完成调用线上没有得到更多的解释。可能是什么问题?

1 个答案:

答案 0 :(得分:1)

你试图用两个参数调用完成,但它应该是元组的一个参数:

completion((meditator, counter))

即:

let tuple = (meditator, counter)
completion(tuple)

如果您希望使用两个参数调用它,请将您的功能更改为:

func meditatorForId(id:Int, completion:((Meditator?, Int?) -> Void)) {

然后这将起作用:

completion(meditator, counter)

但你必须将第二个电话改为:

completion(nil, nil)