1

我正在使用排序描述符按升序对距离数组进行排序,但是很少有索引不包含距离,因此我在未找到距离的地方存储了更大的数字,这有助于我正确地对数组进行排序。但是在找不到距离的地方存储更大的数字并不是一个好方法。因此,我正在寻找一种解决方案,该解决方案在找到和未找到的位置按升序对距离进行排序,因此应该在结束索引中对其进行排序,而无需在 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 ,那么它也按升序排序,顶部有零。而且我希望将值保持为零或未找到结果排序为底部,并且只有保存值的索引才应该在顶部。我不能按降序排序。

4

1 回答 1

1

像这样做

NSSortDescriptor *sortDescriptor = [NSSortDescriptor sortDescriptorWithKey:@"self" ascending:NO];
[self.distanceArr sortUsingDescriptors:[NSArray arrayWithObject:sortDescriptor]];
于 2012-12-04T08:15:40.027 回答