Вложенная проблема NSArray / NSDictionary - PullRequest
1 голос
/ 19 августа 2010

У меня есть NSArray, содержащий несколько NSDictionaries.

У меня есть NSString, содержащий строку идентификатора.

Я пытаюсь выполнить итерацию по NSDictionaries, пока не найду объект, соответствующий NSString.Тогда я хочу вернуть все NSDictionary.

Я довольно новичок в разработке для iPhone, поэтому я, вероятно, упускаю что-то очевидное ... Заранее спасибо.:)

Редактировать, вот файл .plist, который сохраняется:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<array>
    <dict>
        <key>date</key>
        <string>2011/05/20</string>
        <key>id</key>
        <string>1282007740</string>
        <key>name</key>
        <string>Test item name</string>
        <key>niceDate</key>
        <string>May 20, 2011</string>
    </dict>
    <dict>
        <key>date</key>
        <string>2010/08/15</string>
        <key>id</key>
        <string>1282075925</string>
        <key>name</key>
        <string>Test. Nothing to see here.</string>
        <key>niceDate</key>
        <string>Aug 15, 2010</string>
    </dict>
</array>
</plist>

Допустим, моя строка NSString - "1282075925".Я хочу получить словарь с ключом id, который соответствует.

Ответы [ 2 ]

3 голосов
/ 19 августа 2010

Этот код должен делать то, что вы хотите - в конце, dict будет либо указывать на NSDictionary, который вы ищете, либо будет nil, если не было соответствующего словаря.*

2 голосов
/ 19 августа 2010

Если вы ищете @ "12345", с ключом @ "id"

for (NSDictionary* dictionary in array1) {
   id value = [dictionary valueForKey:@"id"];
   if ([value isKindOfClass:[NSString class]]) {
      NSString* string = (NSString*) value;
      if ([string isEqualToString:@"12345"]) {
          return dictionary;
      }
   }
}
return nil;
...