2010-07-05 104 views
0

我正在開發的應用程序中,我將被髮送的字符串等(將其轉換成NSData對象之後)的NSData和UIImage對象,並且還一個的UIImage再次轉換成的NSData目的。如何的NSString對象之間進行區分轉換成轉換成NSData的

現在,在接收端,我有一個接收方法

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

我的問題是,相同的接收方法被調用每一次我發送任何數據的時間,我必須以不同的方式使用圖像和文本數據。

那麼,怎樣才能我知道,無論我收到我的數據是一個的NSString對象轉換爲NSData的,或者它轉換成NSData的UIImage的數據。

請幫幫我。

回答

2

看看蘋果的GKRocket示例代碼,特別是在SessionManager.msendData:ofTypereceiveData:fromPeer:inSession:context:實施。您需要定義一組「類型的」特定於應用程序的並把他們作爲NSData有效載荷的頭,然後讀取接收端的頭,以確定如何妥善處理負載。

+0

+1這是正確的答案。 – TechZen 2010-07-05 14:54:15

1

最簡單的方法是定義用於區分正在發送什麼類型的數據在recieveData另一參數(ofType):

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

我不能得到你。我感到在這兩個發送NSData對象您cases.What意思dataofType?能否請你elaborate.because在任何情況下,我會收到同一類型的對象。 – Ajayvictor007 2010-07-05 14:18:51

0

context參數應該被髮送任意數據,以提供一個上下文或意味着發送的數據。它可以被轉換成數據,甚至是複雜的對象。

在這種情況下,簡單的布爾值會怎麼做。

以上是不正確。上下文由接收方設置以區分多個會話或同級。 - TechZen

+0

NSError * er = [[NSError alloc] initWithDomain:@「anurag」code:123 userInfo:nil]; \t \t \t \t \t \t [mSession sendDataToAllPeers:myData的withDataMode:GKSendDataReliable錯誤:&er]; – Ajayvictor007 2010-07-05 14:20:14

+0

我這是在發送的data.How我可以在它使用的上下文中使用的是什麼? – Ajayvictor007 2010-07-05 14:20:47

+0

對不起,我的錯誤,'context'被接收器設置爲傳遞給它自己的代理。顯然它打算區分多個會話。 – TechZen 2010-07-05 14:51:02