如何以编程方式找出plist的根元素是什么,即它是数组还是字典?
答案 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的
答案 2 :(得分:0)
这是核心基金会的方式:
if (CFGetTypeID((CFPropertyListRef)myPropertyList) == CFDictionaryGetTypeID()) {
// its a dictionary
}
答案 3 :(得分:0)
您不应该使用class方法。使用NSObject的isKindOfClass :(或isMemberOfClass :)来测试对象的类是[NSArray类]还是[NSDictionary类]。