目前即使我做orderByAscending它也不会通过提升来做到。 我没看到的问题是什么?我正在使用Parse
PFQuery *foodList = [PFQuery queryWithClassName:@"Food"];
[foodList whereKey:@"date" greaterThanOrEqualTo:minimumDate];
[foodList whereKey:@"date" lessThan:maximumDate];
[foodList orderByAscending:@"expiration_date"];
[foodList findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) {
if (!error) {
}];
示例
food_name expiration_date
Apple 1/2/15
Banana 1/2/15
Pear 1/3/15
Kiwi 1/1/15
输出
输出非常随机。 我假设列表在查询时没有被排序。我不确定如何解决这个问题。
答案 0 :(得分:3)
我使用NSSortDescriptor
变体对Parse SDK进行排序,并且没有遇到任何问题(也可以像过滤那样对多个键进行过滤)。
这是使用描述符而不是键进行排序的方法:
PFQuery *foodList = [PFQuery queryWithClassName:@"Food"];
[foodList whereKey:@"date" greaterThanOrEqualTo:minimumDate];
[foodList whereKey:@"date" lessThan:maximumDate];
NSSortDescriptor *orderBy = [NSSortDescriptor sortDescriptorWithKey:@"expiration_date" ascending:YES];
[foodList orderBySortDescriptor:orderBy];
答案 1 :(得分:1)
我发现,一旦你开始添加多个过滤器,Parse Query就相当不可靠,而且它可能是一个bug,但似乎没有太多理由。当我有多个过滤器时,我所做的就是NSPredicate。
NSPredicate *minPredicate = [NSPredicate predicateWithFormat:@"date >= %@", minimumDate];
NSPredicate *maxPredicate = [NSPredicate predicateWithFormat:@"date < %@", maximumDate];
NSPredicate *predicate = [NSCompoundPredicate andPredicateWithSubpredicates:@[minPredicate,maxPredicate]];
PFQuery *foodList = [PFQuery queryWithClassName:@"Food" predicate:predicate];
[foodList orderByAscending:@"expiration_date"];
[foodList findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) {
}];
另一种可能性是您的查询过滤了日期,然后您通过&#34; expiration_date&#34;而且我不确定两者之间是否存在脱节。确保您的对象术语符合您的要求。