2016-04-23 181 views
0

我試圖在函數如下面的代碼完成返回一個簡單的元組結束通話「額外的參數在召喚」:在斯威夫特

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

您正在嘗試呼叫完成有兩個參數,但它應該是與元組一個參數:

completion((meditator, counter)) 

即:

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

如果您希望有兩個稱呼它參數然後改變你的功能:

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

然後這將工作:

completion(meditator, counter) 

,但你必須在第二個呼叫更改爲:

completion(nil, nil) 
+0

所以ADDIO括號外的quotino標誌變成了成元組,同時將其插入內保持作爲參數。非常有趣,謝謝。 –

+0

是的,那是完全正確的。 – markwatsonatx