我有一个自定义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已经创建了简单的方法来排序数组,但我怎么能在这里使用它?谢谢 ! 最大
答案 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的排序数组。 }