【问题标题】:'Extra Argument in Call' in completion call in SwiftSwift 完成调用中的“调用中的额外参数”
【发布时间】:2016-04-23 21:19:25
【问题描述】:

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

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)
}

然而,我在完成调用行上得到“调用中的额外参数”,但没有得到更多解释。可能是什么问题?

【问题讨论】:

    标签: swift closures tuples


    【解决方案1】:

    您正在尝试使用两个参数调用完成,但它应该是带有元组的单个参数:

    completion((meditator, counter))
    

    即:

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

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

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

    那么这将起作用:

    completion(meditator, counter)
    

    但您必须将第二次调用更改为:

    completion(nil, nil)
    

    【讨论】:

    • 所以添加括号外的引号将其变成一个元组,而将其插入其中保留 as 参数。非常有趣,谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-21
    • 1970-01-01
    • 1970-01-01
    • 2015-09-13
    • 2018-08-26
    • 2017-01-22
    • 1970-01-01
    相关资源
    最近更新 更多