2010-05-17 106 views
2

我有一個plist,與主NSDictionary,其中的鍵是日期。 對於每一個日期,我有一個NSDictionary,其中的鍵是(比方說)類別。 每個類別都包含密鑰和值。嵌套從plist NSDictionary

我想創建2個變量,每個將持有正確的NSDictionary:

NSDictionary *dates = ? 
NSDictionary *Categories = ? 

下面是我的plist,請幫助瞭解如何應該這樣做。

**注:我知道如何分配第一個日期字典從plist ... 只是堅持與類別。

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

plist中:

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

任何幫助將不勝感激,因爲我已經搜查了論壇的歷史,發現我的方案相匹配什麼。

謝謝!

回答

2

您應該將值標記爲數組,因此您可以簡單地遍歷它們。

<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"]; 
} 
+0

嘿,說實話,加入陣列只是做我很難讀/理解, 讓我們回到我的plist的秒, 我只是想有如下: 1 NSDictionary的所有日期 1的NSDictionary所有類別 然後我可以問,[類別objectForKey:@「鍵1」],我會得到值1, 任何想法? – 2010-05-17 15:24:59

+0

問題是,你有幾個「類別」 - 詞典,我認爲它可能會導致問題,如果你把它們混合到一個詞典。另一方面:在我的建議中,[catgories objectAtIndex:0]有什麼問題? – cem 2010-05-17 15:46:04

+0

嘿unset,我明白了你的觀點,你是對的, 我會使用[categories objectAtIndex:row]並且會在主Dictionary中循環。 感謝您的幫助 – 2010-05-18 14:28:09