从plist文件中排序数组

时间:2012-05-12 16:59:35

标签: iphone ios xcode ipad plist

我有一个自定义plist文件,其中包含字典。每个字典都包含有关一辆车的信息:

     <key>Ford</key>
<dict>
    <key>name</key>
    <string>Ford</string>
    <key>color</key>
    <string>green</string>
    <key>price</key>
    <integer>45000</integer>
</dict

    <key>Toyota</key>
<dict>
    <key>name</key>
    <string>Toyota</string>
    <key>color</key>
    <string>blue</string>
    <key>price</key>
    <integer>40000</integer>
</dict

    <key>BMW</key>
<dict>
    <key>name</key>
    <string>BMW</string>
    <key>color</key>
    <string>blue</string>
    <key>price</key>
    <integer>40000</integer>
</dict>

我也有一个UITableView,我用这个plist中的一些汽车填充它。

 NSEnumerator *enumerator = [dictionary objectEnumerator];
    id returnValue;


    while ((returnValue = [enumerator nextObject])) 
    {

        if ([[returnValue valueForKey:@"color"]isEqualToString:@"blue")
        {  
            [array addObject:[returnValue valueForKey:@"name"]];
        }

问题:当我收到包含一些汽车的UITableView时,我现在如何按价格对它们进行排序?例如,宝马比福特便宜,所以它应该在第一个细胞中,福特必须在第二个细胞中。我知道Apple已经创建了简单的方法来排序数组,但我怎么能在这里使用它?谢谢 ! 最大

2 个答案:

答案 0 :(得分:3)

尝试this

NSSortDescriptor *descriptor = [[NSSortDescriptor alloc] initWithKey:@"price"  ascending:YES];
[array sortUsingDescriptors:[NSArray arrayWithObjects:descriptor,nil]];

答案 1 :(得分:0)

首先将价格的值提取到列表中。然后使用NSSorDescriptor。

{
   NSArray *carArray=[[NSArray alloc] initwithContentsofFile:@"youFileName"    ofType:@"plist"];
   NSmutableArray *priceList=[[NSMutableArray alloc] init];
   for(int index=0;index<[carArray count];index++)
   {
      NSDictionary *valueList=[carArray objectAtIndex:index];
      [priceList addObject:[valueList objectForKey:@"Price"]];

   }
   NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"price"  ascending:YES];
   [priceList sortUsingDescriptors:[NSArray arrayWithObjects:descriptor,nil]];

现在您将获得基于Price的排序数组。     }