Могу ли я прочитать только ключ из plist? - PullRequest
5 голосов
/ 04 июня 2011

Могу ли я прочитать только ключ из plist без его значения, также, если я знаю значение, могу ли я прочитать ключ?

Ответы [ 4 ]

11 голосов
/ 04 июня 2011

Чтение .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];
3 голосов
/ 04 июня 2011

В качестве альтернативы вы можете использовать метод allKeysForObject:, который возвращает,

Новый массив, содержащий ключи, соответствующие всем вхождениям anObject в словаре.Если объект, соответствующий anObject, не найден, возвращает пустой массив.

Из этого массива можно получить ключ , вызвав метод objectAtIndex:.

1 голос
/ 05 июля 2013

Чтобы прочитать значения в установленной папке приложения:

 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];

Метод Джхалии у меня не сработал, тогда я попробовал этот метод.

1 голос
/ 04 июня 2011

Использование -[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потому что ключи не заказаны.Ну хорошо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...