如何以编程方式找出plist的根元素是什么,即它是数组还是字典?
用+[NSPropertyListSerialization propertyListFromData:…]
加载plist,然后检查生成的对象的-class
。
试试以下内容:
NSData *plistData;
NSString *error;
NSPropertyListFormat format;
id plist;
NSString *localizedPath = [[NSBundle mainBundle] pathForResource:fileName ofType:@"plist"];
plistData = [NSData dataWithContentsOfFile:localizedPath];
plist = [NSPropertyListSerialization propertyListFromData:plistData mutabilityOption:NSPropertyListImmutable format:&format errorDescription:&error];
if([plist isKindOfClass:[NSDictionary class]]){
//do some ...
}
if([plist isKindOfClass:[NSArray class]]){
//do some ...
}
来自Apple的Additional reading。
这是核心基金会的方式:
if (CFGetTypeID((CFPropertyListRef)myPropertyList) == CFDictionaryGetTypeID()) {
// its a dictionary
}
您不应该使用类方法。使用NSObject的isKindOfClass :(或isMemberOfClass :)来测试对象的类是[NSArray类]还是[NSDictionary类]。