Swift: integra GameCenter para usar marcadores

Estoy haciendo un juego en Swift. Quiero poder publicar el puntaje de los usuarios usando GameCenter, para que se puedan ver los puntajes de todos mis usuarios. Sin embargo, he pasado el día pasado tratando de averiguar cómo hacer esto, pero no he encontrado ninguna instrucción útil.

Soy bastante nuevo en la progtwigción de iOS, y Swift, y de la muy poca cantidad de información sobre este tema, todo está escrito en Objective-C.

¿Alguien puede ayudarme a integrar GameCenter en mi aplicación, para que pueda publicar puntuaciones de usuarios en las tablas de sorting para que las vean las personas?

EDIT: Ya he creado una sorting de GameCenter en iTunesConnect.

EDIT 2: He intentado seguir este tutorial: http://www.appcoda.com/ios-game-kit-framework/ y convertirlo a Swift. He convertido esto:

-(void)authenticateLocalPlayer { GKLocalPlayer *localPlayer = [GKLocalPlayer localPlayer]; localPlayer.authenticateHandler = ^(UIViewController *viewController, NSError *error){ if (viewController != nil) { [self presentViewController:viewController animated:YES completion:nil]; } else{ if ([GKLocalPlayer localPlayer].authenticated) { _gameCenterEnabled = YES; // Get the default leaderboard identifier. [[GKLocalPlayer localPlayer] loadDefaultLeaderboardIdentifierWithCompletionHandler:^(NSString *leaderboardIdentifier, NSError *error) { if (error != nil) { NSLog(@"%@", [error localizedDescription]); } else{ _leaderboardIdentifier = leaderboardIdentifier; } }]; } else { _gameCenterEnabled = NO; } } }; } 

dentro de esto:

 func authenticateLocalPlayer() { var localPlayer : GKLocalPlayer! localPlayer.authenticateHandler = {(viewController : MenuViewController!, error : NSError!) -> Void in if viewController != nil { self.presentViewController(viewController, animated: true, completion: nil) } else { if localPlayer.authenticated { self.gameCenterEnabled = true localPlayer.loadDefaultLeaderboardIdentifierWithCompletionHandler({ (leaderboardIdentifier : String!, error : NSError!) -> Void in if error != nil { println(error.localizedDescription) } else { self.leaderboardIdentifier = leaderboardIdentifier } }) } else { self.gameCenterEnabled = false } } } } 

pero se cuelga en esta línea:

 localPlayer.authenticateHandler = {(viewController : UIViewController!, error : NSError!) -> Void in 

El post de error es:

error fatal: inesperadamente encontrado nulo mientras desenvuelve un valor opcional

¡No puedo creer lo difícil que es esto!

Tu problema específico no tiene nada que ver con Game Center y está sucediendo porque tienes la línea var localPlayer : GKLocalPlayer! .

Está declarando un opcional implícitamente desenvuelto y luego usándolo de inmediato. Su valor es nulo en la línea siguiente cuando intenta establecer localPlayer.authenticateHandler .

En su lugar, debe instanciar GKLocalPlayer así:

 var localPlayer = GKLocalPlayer() 

Tenga en count que actualmente hay problemas con Game Center y Swift. Su código va a funcionar pero localPlayer.authenticated nunca se establece en true. Este problema se rastrea aquí:

http://www.openradar.me/17825348

Crédito a: http://www.stuarticus.net/blog/2014/7/game-center-authentication-and-swift para archivar el boleto de radar.

Puedes usar eso, creo una class simple para el centro de juegos iOS en github Easy Class Game Center Swift https://github.com/DaRkD0G/Easy-Game-Center-Swift