convertir ObjC a Swift – InsafePointer <Void> no convertible a tipo de estructura

Estoy siguiendo un tutorial escrito en objective-c aquí y ya he convertido la mayoría de las cosas en rápidas, sin embargo, algunas líneas simplemente no funcionan.

Por ejemplo, he convertido las siguientes estructuras:

typedef struct { MessageType messageType; } Message; typedef struct { Message message; } MessageMove; 

a esto:

 struct Message { var messageType:MessageType } struct MessageMove { var message:Message } 

y en otra línea, el tutorial hace lo siguiente:

 - (void)match:(GKMatch *)match didReceiveData:(NSData *)data fromPlayer:(NSString *)playerID { Message *message = (Message*)[data bytes]; if (message->messageType == kMessageTypeMove) { MessageMove *messageMove = (MessageMove*) [data bytes]; } } 

He intentado cambiar esto a lo siguiente:

 func matchDidReceiveDataFromPlayer(match: GKMatch, data: NSData, player: GKPlayer) { //1 var message = data.bytes as Message //DOESNT WORK if (message.messageType == MessageType.kMessageTypeGameBegin) //2 var messageMove = data.bytes as MessageMove //WORKS } 

pero el primer elenco (// 1) no funciona, dice lo siguiente:

UnsafePointer<Void> not convertible to Message

sin embargo, el segundo molde (// 2) funciona. ¿Es porque estoy haciendo una comprobación del tipo de post en la instrucción if?

¿Alguna idea sobre cómo solucionar este problema?

¿Es porque estoy haciendo una comprobación del tipo de post en la instrucción if?

No. Es porque, gracias al primer error en //1 , el comstackdor nunca alcanza la segunda línea //2 en absoluto. Obtendrás el mismo error allí, si el comstackdor llegó a él.

Ahora hablemos de la syntax. Si realmente cree que data.bytes es lo mismo que una instancia de Mensaje, diría:

 let message = UnsafePointer<Message>(data.bytes).memory 

Sin embargo, yo personalmente preferiría dudar de que los datos que obtienes de Objective-C constituyan una estructura Swift. Lo que sucedió en el final del Objetivo C, después de todo, es presumiblemente una estructura C , que es un animal diferente.