Ajayvictor007
Ajayvictor007

Reputation: 327

how to differentiate between NSString object converted into NSData and UIImage object converted into NSData

i am developing an application in which i will be sending a string to peer(after converting it into NSData object) and also an UIImage again by converting into NSData object.

Now at receiving end i have a receive method

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

My problem is that,same receive method is called every time i send any data,and i have to use image and text data differently.

So how can i know,whether i data that i have received is a NSString object converted into NSData or it's UIImage data converted into NSData.

please help me.

Upvotes: 0

Views: 483

Answers (3)

TechZen
TechZen

Reputation: 64428

The context parameter is supposed to be arbitrary data sent to provide a context or meaning for the sent data. It can be anything converted to data, even complex objects.

In this case a simple bool value would do.

The above is incorrect. The context is set by the receiver to distinguish between multiple sessions or peers. -- TechZen

Upvotes: 0

Nathan de Vries
Nathan de Vries

Reputation: 15511

Take a look at Apple's GKRocket sample code, specifically the implementation of sendData:ofType and receiveData:fromPeer:inSession:context: in SessionManager.m. You will need to define a set of "types" specific to your application and send them as a header in the NSData payload, and then read the header on the receiving end to determine how to handle the payload appropriately.

Upvotes: 2

ennuikiller
ennuikiller

Reputation: 46965

The easiest way is to define another parameter (ofType) in recieveData that distinguishes what type of data is being sent:

(void) receiveData:(NSData *)data ofType: (bool type) fromPeer:(NSString *)peer inSession: (GKSession *)session context:(void *)context 

Upvotes: 1

Related Questions