【发布时间】:2015-09-06 11:21:16
【问题描述】:
我正在学习用 Objective-c here 编写的教程,并且我已经将大部分内容转换为 swift,但是有些行不起作用。
例如,我已经转换了以下结构:
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 语句中的消息类型?
关于如何解决这个问题的任何想法?
【问题讨论】:
标签: ios objective-c xcode swift