2009-12-17 50 views
0

我想通過gamekit找到我通過發送函數發送的數據的類型。基本上我將這些數據存儲在CFPropertyListRef中。 dataReceived是NSMutatableData類型的。無論如何找出與此變量關聯的類?

- (void) receiveData:(NSMutableData *)data fromPeer:(NSString *)peer inSession: (GKSession *)session context:(void *)context { 
    // Read the bytes in data and perform an application-specific action. 
    [dataReceived setData:data]; 

if([dataReceived length]> 0) { 
    CFStringRef errorString; 
    CFPropertyListRef plist = CFPropertyListCreateFromXMLData(kCFAllocatorDefault, (CFDataRef)dataReceived, kCFPropertyListMutableContainers, &errorString); 
    } 

我的目標是找出是否plist中的類型的NSDictionary的,因爲我想處理這些數據適當

回答

2

您可以使用CFGetTypeID()這個:

if(CFDictionaryGetTypeID() == CFGetTypeID(plist)) 
    // do something 

如果你更喜歡Objective-C,看看NSPropertyListSerialization

0

您可以這樣做,但這並不是說您應該 - 屬性列表可以包含字典或數組作爲頂級元素。你想爲字典專門做些什麼?

+0

我想區分它在該方法中接收的字符串和nsdictionary。所以我可以存儲NSDictionary而不是我收到的字符串。它主要用於驗證過程 – Frank 2009-12-17 17:23:38

+0

我想說,根據上下文,數據的內容應該是已知的。看起來這是你發送的數據 - 你也許可以考慮讓頂層對象始終是一個帶有數組/字典數據的「content」鍵的字典,然後指定另一個鍵(比如'name')什麼樣的信息被傳遞。 – 2009-12-17 17:33:10

相關問題