我是否可以从plist中读取没有其值的密钥,如果我知道该值可以读取密钥吗?
答案 0 :(得分:11)
阅读.plist:
NSString *path = [[NSBundle mainBundle] pathForResource:@"myPlist" ofType:@"plist"];
NSMutableDictionary *myDictionary = [[NSMutableDictionary alloc] initWithContentsOfFile:path];
获取所有密钥和所有值:
NSArray* allmyKeys = [myDictionary allKeys];
NSArray* allmyValues= [myDictionary allValues];
获取值对象的所有键:
NSArray* allmyKeys = [myDictionary allKeysForObject:myValueObject];
答案 1 :(得分:3)
作为替代方案,您可以使用返回的allKeysForObject:
方法
一个新数组,包含与字典中所有出现的anObject相对应的键。如果找不到与anObject匹配的对象,则返回一个空数组。
从该数组中,您可以通过调用objectAtIndex:
方法获取键。
答案 2 :(得分:1)
使用-[NSDictionary allKeysForObject:]
*。
NSArray *keys = [myDict allKeysForObject:@"My Value"];
if ([keys count] != 0) { // to prevent out-of-bounds crashes
NSString *key = [keys objectAtIndex:0];
return key;
} else {
return nil;
}
*不知道为什么它返回NSArray对象而不是NSSet对象,因为键没有被排序。哦,好吧。
答案 3 :(得分:1)
要读取应用已安装文件夹中的值:
NSString *PListName=@"ExamplePlist";
NSString *_PlistNameWithExtension=[NSString stringWithFormat:@"%@.plist",PlistName];
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); //1
NSString *documentsDirectory = [paths objectAtIndex:0]; //2
NSString *path = [documentsDirectory stringByAppendingPathComponent:_PlistNameWithExtension]; //3
NSDictionary *myDictionary = [[NSDictionary alloc] initWithContentsOfFile:path];
NSLog(@"%@",[myDictionary description]);
NSArray *AllKeys=[myDictionary allKeys];
Jhaliya的方法对我没用,然后我尝试了这种方法。