В любом случае, чтобы узнать класс, который связан с этой переменной? - PullRequest
0 голосов
/ 17 декабря 2009

Я хочу узнать тип данных, которые я отправляю через функцию отправки через 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 ]

2 голосов
/ 17 декабря 2009

Вы можете использовать CFGetTypeID () для этого:

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

Если вы предпочитаете Objective-C, взгляните на NSPropertyListSerialization .

0 голосов
/ 17 декабря 2009

Вы можете сделать это, но это не значит, что вы должны - список свойств может иметь словарь или массив в качестве элемента верхнего уровня. Для чего вам нужен специальный словарь?

...