如何区分转换为NSData的NSString对象和转换为NSData的UIImage对象

时间:2010-07-05 13:39:11

标签: iphone objective-c

我正在开发一个应用程序,我将向同行发送一个字符串(在将其转换为NSData对象之后),并通过转换为NSData对象再次发送UIImage。

现在接收端我有一个接收方法

- (void) receiveData:(NSData *)data
            fromPeer:(NSString *)peer
           inSession:(GKSession *)session
             context:(void *)context

我的问题是,每次发送任何数据时都会调用相同的接收方法,我必须以不同方式使用图像和文本数据。

所以我怎么知道,我收到的数据是NSString对象转换为NSData还是UIImage数据转换为NSData。

请帮帮我。

3 个答案:

答案 0 :(得分:2)

查看Apple的GKRocket示例代码,特别是SessionManager.msendData:ofTypereceiveData: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