вложенный NSDictionary из plist - PullRequest
2 голосов
/ 17 мая 2010

У меня есть plist с основным NSDictionary, в котором его ключами являются даты. На каждую дату у меня есть NSDictionary, в котором ключи являются (скажем, категориями). Каждая категория содержит ключи и значения.

Я хотел бы создать 2 переменные, каждая из которых будет содержать правильный NSDictionary:

NSDictionary *dates = ?
NSDictionary *Categories = ?

Ниже приведен мой список, пожалуйста, помогите понять, как это сделать.

** Примечание: я знаю, как назначить первый словарь дат из списка ... просто застрял с категориями.

NSDictionary *dict = [[NSDictionary alloc]initWithContentsOfFile:path];
self.dates = dict;
[dict release];

Плист:

<dict>
    <key>2010-05-08</key>
    <dict>
        <key>Catergory1</key>
        <dict>
            <key>key1</key>
            <string>value1</string>
            <key>key2</key>
            <string>value2</string>
            <key>key3</key>
            <string>value3</string>
        </dict>
        <key>Catergory2</key>
        <dict>
            <key>key1</key>
            <string>value1</string>
            <key>key2</key>
            <string>value2</string>
            <key>key3</key>
            <string>value3</string>
        </dict>
    <key>2010-01-02</key>
    <dict>
        <key>Catergory1</key>
        <dict>
            <key>key1</key>
            <string>value1</string>
            <key>key2</key>
            <string>value2</string>
            <key>key3</key>
            <string>value3</string>
        </dict>
        <key>Catergory2</key>
        <dict>
            <key>key1</key>
            <string>value1</string>
            <key>key2</key>
            <string>value2</string>
            <key>key3</key>
            <string>value3</string>
        </dict>
    </dict>
</dict>
</plist>

Любая помощь будет принята с благодарностью, так как я просмотрел историю форума и не нашел ничего, соответствующего моему сценарию.

СПАСИБО!

1 Ответ

2 голосов
/ 17 мая 2010

Вы должны разметить значения как массивы, чтобы их можно было просто перебрать.

<plist version="1.0">
<dict>
 <key>dates</key>
 <array>
  <dict>
   <key>date</key>
   <date>2010-05-17T12:40:32Z</date>
   <key>categories</key>
   <array>
    <dict>
     <key>key</key>
     <string>value</string>
    </dict>
    <dict>
     <key>key</key>
     <string>value</string>
    </dict>
   </array>
  </dict>
  <dict>
   <key>date</key>
   <date>2010-05-17T12:40:32Z</date>
   <key>categories</key>
   <array>
    <dict>
     <key>key</key>
     <string>value</string>
    </dict>
    <dict>
     <key>key</key>
     <string>value</string>
    </dict>
   </array>
  </dict>
 </array>
</dict>
</plist>

Код:

NSDictionary *dict = [NSDictionary dictionaryWithContentsOfFile:pathToFile];
 for (NSDictionary *date in [dict valueForKey:@"dates"]) {
  NSArray *catgories = [date valueForKey:@"categories"];
 }
...