Objective c 解析:如何自定义排序?

Objective c 解析:如何自定义排序?,objective-c,parse-platform,pfquery,Objective C,Parse Platform,Pfquery,我想按数组的索引编号对对象进行排序 我有一个特殊顺序的数据填充数组,并希望按该顺序显示它们 PFQuery *query = [PFQuery queryWithClassName:@"photoObject"]; [query whereKey:@"objectId" containedIn:self.favArray]; [query findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) { [query

我想按数组的索引编号对对象进行排序

我有一个特殊顺序的数据填充数组,并希望按该顺序显示它们

PFQuery *query = [PFQuery queryWithClassName:@"photoObject"];

[query whereKey:@"objectId" containedIn:self.favArray];

[query findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) {
[query setCachePolicy:kPFCachePolicyNetworkOnly];

    if (!error) {

        self.imageFilesArray = [[NSArray alloc]initWithArray:objects];
        [self.favCV reloadData];
    }

可以在将数组设置为self.imageFilesArray之前对其进行排序

诸如此类:

NSArray *sortedArray = [objects sortedArrayUsingComparator:^NSComparisonResult(PFObject *a, PFObject *b) {
    return [[a objectForKey:@"index"] compare:[b objectForKey:@"index"]];
}];
self.imageFilesArray = sortedArray;

为此,您需要进行本地排序,因为没有用于远程排序数据的索引值。您应该知道,如果您有更多的结果,而不是适合在一个页面从解析您将需要处理

要在本地排序,请执行以下操作:

NSArray *sortedArray = [objects sortedArrayUsingComparator:^NSComparisonResult(id a, id b) {
    return [@([self.favArray indexOfObject:a]) compare:@([self.favArray indexOfObject:b])];
}];

self.imageFilesArray = sortedArray;
解决了

    self.imageFilesArray = nil;
    self.imageFilesArray = [[NSMutableArray alloc]init];
    [self.imageFilesArray addObjectsFromArray:objects];

    if (!error) {

        for (PFObject *object in objects) {

            int index = (int)[self.favArray indexOfObject:[object objectId]];
            [self.imageFilesArray replaceObjectAtIndex:index withObject:object];

        }

        [self.favCV reloadData];
    }
如果需要反转顺序(反转数组的索引顺序)

-(无效)反向{

if([self.imageFilesArray count]你的问题没有说你在谈论哪个数组或者特殊顺序是什么…抱歉。正如你看到的,我正在检索与self.favArray的对象匹配的objectId的对象。然后,我想按self.favArray的顺序将检索到的对象填充到self.imageFilesArray中。嗯,不,我正在尝试从数组中设置顺序在我的本地数据库(sqlite)中.self.favArray是一个数组,其中填充了来自sqlite的数据,我想按照self.favArray的顺序对从解析中检索到的对象进行排序。这实际上是一个答案,还是对问题的补充?这是对我自己的问题的答案,实际上是有效的,另外我还问了一个问题。使用枚举器颠倒顺序,更不用说cod了e、 新问题不应该首先在这里尝试,但正如一些人声称的那样,它对我不起作用。它返回了一个顺序错误的数组。
- (void)reverse {
if ([self.imageFilesArray count] <= 1)
    return;
NSUInteger i = 0;
NSUInteger j = [self.imageFilesArray count] - 1;
while (i < j) {
    [self.imageFilesArray exchangeObjectAtIndex:i
              withObjectAtIndex:j];

    i++;
    j--;
}}