使用结束零按升序对NSArray进行排序

时间:2012-12-04 06:48:51

标签: objective-c ios4 ios6 xcode4.3 xcode4.5

我正在使用排序描述符按升序排序我的距离数组,但是很少有索引不能保持距离所以我存储了一个更大的数字,其中找不到距离,这有助于我正确地对数组进行排序。但是在没有找到距离的情况下存储更多的数字并不是一个好方法。因此,我正在寻找一种解决方案,按照升序排列我的距离,找不到它,所以它应该在结束索引中排序,而不需要在NSArray中硬编码更大的数字。我的排序代码如下。

NSLog(@"%@", self.distanceArr);  // self.distanceArr is a Mutable Array
    NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"OnlyDistance" ascending:YES];
    NSArray *sort = [self.distanceArr mutableCopy];
    NSArray *sortedArray = [sort sortedArrayUsingDescriptors:[NSArray arrayWithObject:sortDescriptor]];

    NSLog(@"Sorted %@",sortedArray);
    NSLog(@"%d",[sortedArray count]);

    self.sortedBusinessDetArr = [sortedArray mutableCopy];


    [self.searchTbl reloadData];

我的数组如下

(
{
    OnlyDistance = "10000.0";  ///   Hard Coded Value where distance is not found.
},
    {
    OnlyDistance = "13089.53";
},
    {
    OnlyDistance = "12991.81";
}, 
{
    OnlyDistance = "10000.0";  ///   Hard Coded Value where distance is not found.
}, 
{
    OnlyDistance = "10000.0";  ///   Hard Coded Value where distance is not found.
},
    {
    OnlyDistance = "13089.53";
}

OnlyDistance是存储浮点值的NSNumber。如果我存储0.0是NSNumber所以它也排序为 在上面用零提升。我希望值保持零或未找到结果排序为底部,只有保持值的索引应该在顶部。我不能按降序排序。

1 个答案:

答案 0 :(得分:1)

这样做

NSSortDescriptor *sortDescriptor = [NSSortDescriptor sortDescriptorWithKey:@"self" ascending:NO];
[self.distanceArr sortUsingDescriptors:[NSArray arrayWithObject:sortDescriptor]];