如何以编程方式查找plist的根元素是什么

时间:2010-03-19 18:13:01

标签: iphone plist

如何以编程方式找出plist的根元素是什么,即它是数组还是字典?

4 个答案:

答案 0 :(得分:2)

使用+[NSPropertyListSerialization propertyListFromData:…]加载plist,然后检查生成的对象的-class

答案 1 :(得分:2)

尝试以下方法:

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

答案 2 :(得分:0)

这是核心基金会的方式:

if (CFGetTypeID((CFPropertyListRef)myPropertyList) == CFDictionaryGetTypeID()) {
    // its a dictionary
}

答案 3 :(得分:0)

您不应该使用class方法。使用NSObject的isKindOfClass :(或isMemberOfClass :)来测试对象的类是[NSArray类]还是[NSDictionary类]。

请参阅:+[NSObject class]