使用 query.limit 对 Parse 的结果进行排序无法按预期工作

Posted

技术标签:

【中文标题】使用 query.limit 对 Parse 的结果进行排序无法按预期工作【英文标题】:Sorting results from Parse is not working as expected with query.limit 【发布时间】:2014-07-08 02:48:58 【问题描述】:

例如,我将查询的限制设置为 10,然后我想获取数据集中的最后 10 个结果并按时间升序排序! 好的,我知道我可以添加:

[messages addDescendingOrder:@"createdAt"];
//OR
[messages addAscendingOrder:@"createdAt"];

但是这样做是获取前 10 条记录或后 10 条记录......它本身并没有对结果进行排序!!升序基本上是设置结果将从哪里开始......从底部或从顶部开始。但我希望返回的结果集是最后 10 个结果,并且这些结果按升序排列。相反,我得到了最后 10 个结果,但在表格中,最新的结果位于顶部,集合中最旧的结果是表格中的最后一个单元格……我想要相反的结果……

有没有办法让 Parse 处理这个问题,而不是在设备本身上进行逻辑处理? 非常感谢任何帮助。

【问题讨论】:

【参考方案1】:

好的,对于遇到类似问题的其他人,解决方案是将您从 Parse 查询中获得的结果数组反转。完毕 :) 快乐编码!

我使用了我在另一个关于在 *** 上反转数组的问题中找到的代码,但这里又是代码:

@implementation NSArray (Reverse)

- (NSArray *)reversedArray 
    NSMutableArray *array = [NSMutableArray arrayWithCapacity:[self count]];
    NSEnumerator *enumerator = [self reverseObjectEnumerator];
    for (id element in enumerator) 
        [array addObject:element];
    
    return array;


@end

@implementation NSMutableArray (Reverse)

- (void)reverse 
    if ([self count] == 0)
        return;
    NSUInteger i = 0;
    NSUInteger j = [self count] - 1;
    while (i < j) 
        [self exchangeObjectAtIndex:i
                  withObjectAtIndex:j];

        i++;
        j--;
    


@end

【讨论】:

以上是关于使用 query.limit 对 Parse 的结果进行排序无法按预期工作的主要内容,如果未能解决你的问题,请参考以下文章

检查解析重复项(iOS)

Google Maps API OVER QUERY LIMIT 每秒限制

follow

在由union运算符组合起来的select语句中,不能有order by语句,但是,可以对最后的结

如何重置mongodb聚合限制

mysql fetch数组一直返回false