Objective c 通过对数组中的对象计数对PFQuery进行排序

Objective c 通过对数组中的对象计数对PFQuery进行排序,objective-c,uitableview,sorting,parse-platform,pfquery,Objective C,Uitableview,Sorting,Parse Platform,Pfquery,我所做的是在我的解析查询中,检查在过去7天中哪些帖子被选中(喜欢)。然后,我删除那些没有的日期。这很好用。现在我的问题是,我需要在UITableView中按数组中日期的降序对它们进行排序,但我的SorterDarrayUsingComparator不起作用。我对目标C还不熟悉,所以它可能很简单,但是idk。这是我的密码 - (PFQuery *)queryForParse { PFQuery *query1 = [PFQuery queryWithClassName:self.parseClas

我所做的是在我的解析查询中,检查在过去7天中哪些帖子被选中(喜欢)。然后,我删除那些没有的日期。这很好用。现在我的问题是,我需要在UITableView中按数组中日期的降序对它们进行排序,但我的SorterDarrayUsingComparator不起作用。我对目标C还不熟悉,所以它可能很简单,但是idk。这是我的密码

- (PFQuery *)queryForParse {
PFQuery *query1 = [PFQuery queryWithClassName:self.parseClassName];

//[query1 selectKeys: [NSArray arrayWithContentsOfFile:[ NSString @"checkMark"]]];

[query1 whereKey:@"location" nearGeoPoint:[PFGeoPoint geoPointWithLatitude:[LocationController sharedSingleton].locationManager.location.coordinate.latitude longitude:[LocationController sharedSingleton].locationManager.location.coordinate.longitude] withinMiles:50];
[query1 findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) {
    if (!error){

        placesArray = [[NSMutableArray alloc] initWithArray:objects];

        NSMutableArray *toDelete = [NSMutableArray array];
        NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
        [dateFormat setDateFormat:@"yyyyMMdd"];

        for (PFObject *tempObject in placesArray){
            checkDates = [[NSMutableArray alloc] initWithArray:[tempObject objectForKey:@"checkMarkDates"]];
            for (NSString *dateString in checkDates) {
                NSDate *date = [dateFormat dateFromString: dateString];
                if ([date timeIntervalSinceNow] > -604800){
                    [toDelete addObject:dateString];
                }
            }
            [checkDates removeObjectsInArray:toDelete];
            [tempObject removeObjectsInArray:checkDates forKey:@"checkMarkDates"];

            sortedArray = [placesArray sortedArrayUsingComparator:^NSComparisonResult(id obj1, id obj2) {
                NSUInteger *first = [[obj1 objectForKey:@"checkMarkDates"] count];
                NSNumber *f = [[NSNumber alloc] initWithInteger:first];
                NSUInteger *second = [[obj2 objectForKey:@"checkMarkDates"] count];
                NSNumber *s = [[NSNumber alloc] initWithInteger:second];

                return [f compare:s];
            }];
        }

        NSLog(@"%@", sortedArray);
    }
    [placesTable reloadData];
}];
return query1;

}

把它弄明白了。我在for语句中使用了comparator。我把它搬出去了,现在可以用了。

什么坏了,排序坏了?在将
placesArray
传递到排序函数之前,是否已验证它是否包含预期的值?是,排序不起作用。是的,placesArray包含正确的值ok,假设placesArray包含正确的值,我看不出排序失败的原因。我的下一个测试是手动创建一个由3个项目组成的数组,在比较块的末尾设置一个断点,并使用钢笔和纸来确定排序无法正确解析的原因。我不确定如何使用断点,但我只是在解析网站上读到使用[query1 whereKey:@“location”nearGeoPoint:]将按从最近到最远的顺序进行排序。这可能是问题所在吗?如果是这样的话,我能以某种方式覆盖它吗?