2010-12-02 9 views
1

Ich versuche eine tief verschachtelte Datenstruktur und NSPredate zu verwenden, um diese Daten zu filtern.mit NSPredate auf verschachtelten Wörterbuch/Array

Ich habe eine plist-Datei wie folgt:

<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> 
<plist version="1.0"> 
<dict> 
     <key>images-ipad</key> 
     <array> 
       <dict> 
         <key>categories</key> 
         <array> 
           <string>standard</string> 
         </array> 
         <key>name</key> 
         <string>Default</string> 
         <key>plist</key> 
         <string>cardSheet.plist</string> 
         <key>png</key> 
         <string>cardSheet.png</string> 
       </dict> 
       <dict> 
         <key>categories</key> 
         <array> 
           <string>standard</string> 
         </array> 
         <key>name</key> 
         <string>Optional</string> 
         <key>plist</key> 
         <string>cardSheet.plist</string> 
         <key>png</key> 
         <string>cardSheet.png</string> 
       </dict> 
       <dict> 
         <key>categories</key> 
         <array> 
           <string>christmas</string> 
           <string>holiday</string> 
           <string>standard</string> 
         </array> 
         <key>name</key> 
         <string>christmas</string> 
         <key>plist</key> 
         <string>cardSheet.plist</string> 
         <key>png</key> 
         <string>cardSheet.png</string> 
       </dict> 
     </array> 
</dict> 
</plist> 

Was ich in ein NSDictionary über dictionWithContentsOfFile laden.

Ich möchte dann die Elemente des Arrays Bilder-ipad, die in der Kategorie "Standard" über NSPredate sind. Ich denke, das ist möglich, aber ich konnte es nicht erreichen, und die Dokumente scheinen keine verschachtelten Datenstrukturen abzudecken.

Also, ich habe dies versucht:

NSPredicate *getcat = [NSPredicate predicateWithFormat:@"ANY images-ipad.categories == 'holiday'"]; 
NSArray *res = [[dict objectForKey:@"images-ipad"] filteredArrayUsingPredicate:getcat]; 

aber es liefert keine Elemente, die bringt mich zu Stackoverflow. Danke im Voraus.

Antwort

4

Da Sie das Ergebnis von [dict objectForKey:@"images-ipad"] filtern, sollten Sie diese Zeichenfolge nicht in den Schlüsselpfad des Prädikats aufnehmen, da dies im Grunde dem Suchen nach images-ipad.images-ipad.categories entspricht, das nicht existiert.

Verwandte Themen