2012-07-12 75 views
1
其他鍵值
<array> 
<array> 
    <dict> 
     <key>UserName</key> 
     <string>BMWM6</string> 
     <key>Engine</key> 
     <string>4.0</string> 
     <key>Image</key> 
     <string>bmwM6.png</string> 
     <key>Dealers</key> 
     <string>USA</string> 
     <key>Phone</key> 
     <string>10000</string> 
     <key>Price</key> 
     <string>68</string> 
     <key>Category</key> 
     <string>BMW</string> 
    </dict> 
    <dict> 
     <key>UserName</key> 
     <string>BMWi740</string> 
     <key>Engine</key> 
     <string>4.0</string> 
     <key>Image</key> 
     <string>bmwM6.png</string> 
     <key>Dealers</key> 
     <string>NewYork</string> 
     <key>Phone</key> 
     <string>13800138000</string> 
     <key>Price</key> 
     <string>235</string> 
     <key>Category</key> 
     <string>BMW</string> 
    </dict> 
    <dict> 
     <key>UserName</key> 
     <string>BMWX6</string> 
     <key>Engine</key> 
     <string>3.0</string> 
     <key>Image</key> 
     <string>bmwM6.png</string> 
     <key>Dealers</key> 
     <string>NewYork</string> 
     <key>Phone</key> 
     <string>13800138000</string> 
     <key>Price</key> 
     <string>231</string> 
     <key>Category</key> 
     <string>BMW</string> 
    </dict> 
</array> 
<array> 
    <dict> 
     <key>UserName</key> 
     <string>E60</string> 
     <key>Engine</key> 
     <string>3.5</string> 
     <key>Image</key> 
     <string>BenzE60.png</string> 
     <key>Dealers</key> 
     <string>NewYork</string> 
     <key>Phone</key> 
     <string>13800138000</string> 
     <key>Price</key> 
     <string>180</string> 
     <key>Category</key> 
     <string>BENZ</string> 
    </dict> 
</array> 
<array> 
    <dict> 
     <key>UserName</key> 
     <string>R8</string> 
     <key>Engine</key> 
     <string>4.5</string> 
     <key>Image</key> 
     <string>audiR8.png</string> 
     <key>Dealers</key> 
     <string>NewYork</string> 
     <key>Phone</key> 
     <string>13800138000</string> 
     <key>Price</key> 
     <string>220</string> 
     <key>Category</key> 
     <string>AUDI</string> 
    </dict> 
</array> 

知道他們中的一個,當獲取在NSDictionary中

我有這樣的plist。一旦我獲得「BMWM6」的價值,我如何知道陣列中同一詞典中的其他值?你能幫我一些嗎?提前致謝。 就是這樣的:我知道BMWM6這個價值,所以我想知道其他關鍵的價值,比如Engine/Dealers/Phone等等。

回答

1

假設plistArray是您的plist內容:

NSString *username = @"BMWM6"; 
NSPredicate *pre = [NSPredicate predicateWithFormat:@"UserName = %@", username]; 
NSDictionary *resultDict = [[plistArray filteredArrayUsingPredicate:pre] lastObject]; 

// now you have the dictionary 
// dealer: 
NSString *dealers = [resultDict objectForKey:@"Dealers"]; 
NSLog(@"dealers: %@", dealers); 
+0

謝謝你harakiri。我知道了。但是我還有一個問題是resultDict爲null。導致plist在服務器上,所以我使用arrayWithContentsOfURL:plistURL來獲取plistArray。雖然我在mainBundle中使用resultDict也是null。 – andyleehao 2012-07-12 15:21:53

+0

嗨harakiri,你可以給一個關於如何獲得plistArray的解決方案嗎? – andyleehao 2012-07-13 06:41:13

0
NSArray *carArray = [plistArray objectAtIndex:0]; 
    NSDictionary *resultDict; 
    for (NSDictionary *dictionary in carArray) { 
     NSString *userName = [dictionary objectForKey:@"UserName"]; 
     if ([userName isEqualToString:carName]) { 
      resultDict = dictionary; 
      break; 
     } 
    } 

從切腹,我用這個和得到答案。

相關問題