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 类型,因为我想适当地处理这些数据

4

2 回答 2

2

您可以为此使用 CFGetTypeID() :

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

如果您更喜欢 Objective-C,请查看NSPropertyListSerialization

于 2009-12-17T17:20:21.463 回答
0

您可以这样做,但这并不是说您应该这样做——属性列表可以将字典或数组作为其顶级元素。你想对字典进行特殊处理是什么?

于 2009-12-17T17:20:31.387 回答