2009-12-17 51 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

相关问题