我正在开发一个应用程序,我将向同行发送一个字符串(在将其转换为NSData对象之后),并通过转换为NSData对象再次发送UIImage。
现在接收端我有一个接收方法
- (void) receiveData:(NSData *)data
fromPeer:(NSString *)peer
inSession:(GKSession *)session
context:(void *)context
我的问题是,每次发送任何数据时都会调用相同的接收方法,我必须以不同方式使用图像和文本数据。
所以我怎么知道,我收到的数据是NSString对象转换为NSData还是UIImage数据转换为NSData。
请帮帮我。
答案 0 :(得分:2)
查看Apple的GKRocket
示例代码,特别是SessionManager.m中sendData:ofType
和receiveData:fromPeer:inSession:context:
的实现。您需要定义一组特定于您的应用程序的“类型”,并将它们作为标头发送到NSData
有效负载中,然后读取接收端的标头以确定如何正确处理有效负载。
答案 1 :(得分:1)
最简单的方法是在recieveData中定义另一个参数(ofType),以区分正在发送的数据类型:
(void) receiveData:(NSData *)data ofType: (bool type) fromPeer:(NSString *)peer inSession: (GKSession *)session context:(void *)context
答案 2 :(得分:0)
context
参数应该是发送的任意数据,以便为发送的数据提供上下文或含义。它可以是任何转换为数据的东西,甚至是复杂的对象。 击>
在这种情况下,一个简单的bool值就可以了。 击>
上述内容不正确。接收器设置上下文以区分多个会话或同伴。 - TechZen