Objective c 通过对数组中的对象计数对PFQuery进行排序
我所做的是在我的解析查询中,检查在过去7天中哪些帖子被选中(喜欢)。然后,我删除那些没有的日期。这很好用。现在我的问题是,我需要在UITableView中按数组中日期的降序对它们进行排序,但我的SorterDarrayUsingComparator不起作用。我对目标C还不熟悉,所以它可能很简单,但是idk。这是我的密码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
- (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:]将按从最近到最远的顺序进行排序。这可能是问题所在吗?如果是这样的话,我能以某种方式覆盖它吗?