Как проверить наличие ключа в плисте? - PullRequest
0 голосов
/ 27 сентября 2010

Я пытаюсь проверить наличие ключа в файле plist в xcode. Мой файл plist имеет такую ​​структуру.

Root (Dictionary)
+- Parent1 (Dictionary)
   - Key1 (Boolean)
   - Key2 (Boolean)
   - Key3 (Boolean)
   - Key4 (Boolean)

+- Parent2 (Dictionary)
   - Key1 (Boolean)
   - Key2 (Boolean)

Теперь мне нужно проверить, существует ли Key2 в Parent1 или нет? Я проверил NSDictionary, но не смог понять, как это сделать.

Любые предложения о том, как это сделать?

Ответы [ 2 ]

5 голосов
/ 27 сентября 2010
 NSDictionary *dict = [NSDictionary dictionaryWithContentsOfFile:@"your.plist"];
 BOOL key2Exists = [[dict objectForKey:@"Parent1"] objectForKey:@"Key2"] != nil;

Что касается явного сравнения nil, я иногда использую его, потому что это делает код более читабельным для меня (это напоминает мне, что переменная в левой части оператора является логической). Я также видел явное «логическое приведение»:

BOOL key2Exists = !![[dict objectForKey:@"Parent1"] objectForKey:@"Key2"];

Полагаю, это вопрос личных предпочтений.

1 голос
/ 27 сентября 2010
NSDictionary *dictionary = [NSDictionary dictionaryWithContentsOfFile:@"some.plist"];
NSDictionary *parentDictionary = [dictionary objectForKey:@"Parent1"];

NSSet *allKeys = [NSSet arrayWithSet:[parentDictionary allKeys]];
BOOL keyExists = [allKeys containsObject:@"Key2"];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...