3
我正在學習Objective-c here中編寫的教程,我已將大部分內容轉換爲swift,但有些代碼行不起作用。將ObjC轉換爲Swift - UnsafePointer <Void>不可轉換爲結構類型
例如,我已經轉換以下結構:
typedef struct {
MessageType messageType;
} Message;
typedef struct {
Message message;
} MessageMove;
這樣:
struct Message {
var messageType:MessageType
}
struct MessageMove {
var message:Message
}
而在另一個線路中,教程執行以下操作:
- (void)match:(GKMatch *)match didReceiveData:(NSData *)data
fromPlayer:(NSString *)playerID {
Message *message = (Message*)[data bytes];
if (message->messageType == kMessageTypeMove) {
MessageMove *messageMove = (MessageMove*) [data bytes];
}
}
我試着將它改爲:
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
}
但劇組中第(// 1)不工作,它說以下內容:
UnsafePointer<Void> not convertible to Message
但是第二投(// 2)的作品。是因爲我正在檢查if語句中的消息類型嗎?
有關如何解決此問題的任何想法?
感謝您的解釋。但是你的意思是「在目標-c結束時進行了什麼」?即使我的'sendData()'方法發送一個Swift結構?或者你是否在說'在處理'NSData'時調用objective-c api? –
我從未使用過遊戲工具包。我不知道如何調用這個方法,或者字節如何進入NSData。我根據你所說的回答。 – matt