2014-12-10 9 views
0

Как я могу реализовать следующее в Swift?Swift Completion Handlers в GameKit

func findMatchForRequest(_ request: GKMatchRequest!, 
    withCompletionHandler completionHandler: ((GKMatch!, 
            NSError!) -> Void)!) 

Когда я попытался

var request = GKMatchRequest(); 
request.minPlayers = 2; 
request.maxPlayers = 4;  
GKMatchmaker.sharedMatchmaker().findMatchForRequest(request, withCompletionHandler: { (match : GKMatch!, error: NSError!) -> Void in { 

       } 
      }) 

это дает "не может преобразовать тип выражения" ошибка компиляции. Мне что-то не хватает?

ответ

1

Вы близко. У вас просто есть лишний набор фигурных скобок в вашем обработчике завершения. Вот правильная версия:

GKMatchmaker.sharedMatchmaker().findMatchForRequest(
    request, 
    withCompletionHandler: {(match : GKMatch!, error: NSError!) -> Void in 
     NSLog("This works") 
}) 

EDIT: Я имел в виду брекеты!

+0

Это не круглые скобки - они фигурные скобки. –

+0

Большое спасибо. – Bavan

1

FYI Вы можете использовать трейлинг окончания:

GKMatchmaker.sharedMatchmaker().findMatchForRequest(request) { 
match, error in 
     println("This works") 
} 
+0

'-> Void' является избыточным – Drux

+0

Истинно, как определения типов (и даже декларации входов). Я отредактировал свой ответ, за то, что заметил. – Francescu