Как я могу отсортировать по пользовательскому значению в NSSortDescriptor? - PullRequest
0 голосов
/ 25 июня 2018

Я хотел бы отсортировать массив с вычислением расстояния между текущим местоположением и местоположением точки на карте. Я сделал свой код, как показано ниже, и я смог получить результат расстояния. Могу ли я узнать, как я могу отсортировать по расстоянию asc (рядом со мной) для моего случая, как показано ниже?

[self.manager GET:@"http://www.samplewebsite.net/api" parameters:nil progress:nil success:^(NSURLSessionTask *task, id responseObject) {

        aryNearMeList = responseObject;

        for (int i = 0; i < aryNearMeList.count; i++) {
        CLLocation *merchantLocation = [[CLLocation alloc] initWithLatitude:[[_serverDataArr [i]valueForKey:@"latitude"] doubleValue] longitude:[[_serverDataArr [i]valueForKey:@"longitude"] doubleValue]];
        CLLocationDistance meters = [merchantLocation distanceFromLocation:location];

        NSString *abc = [NSString stringWithFormat:@"~ %.2f km", meters / 1000.0];
        NSLog(@"243 %@",abc);  //WILL RETURN DISTANCE HERE. HOW CAN I SORT BY DISTANCE ASC??
         }

        NSSortDescriptor *sortDescriptor = [NSSortDescriptor sortDescriptorWithKey:@"abc" ascending:YES
    comparator:^NSComparisonResult(id obj1, id obj2) {
        float value1 = [obj1 floatValue];
        float value2 = [obj2 floatValue];
        if (value1 == value2) {
            return NSOrderedSame;
        } else if (value1 > value2) { 
            return NSOrderedDescending;
        } else {
            return NSOrderedAscending;
        }
    }];
        _serverDataArr = [aryNearMeList sortedArrayUsingDescriptors:@[sortDescriptor]];

        dispatch_async(dispatch_get_main_queue(), ^{
            [self.tableView reloadData];
        });

    } failure:^(NSURLSessionTask *operation, NSError *error) { }
...