2016-04-23 6 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

次の2つの引数を指定して完了をコールしようとしているが、それは、タプルを持つ単一の引数でなければなりません:あなたは2でそれを呼び出すことを好むだろう場合

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

completion((meditator, counter)) 

すなわちパラメータを次のように変更します。

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

次に、これは動作します:

completion(meditator, counter) 

しかし、あなたが第二の呼び出しを変更する必要があります。

completion(nil, nil) 
+0

だから、それは内部のパラメータとして保持挿入しながら括弧の外側quotinoマークは、タプルになっaddio。非常に興味深い、ありがとう。 –

+0

はい、そうです。 – markwatsonatx