ios - 使用 sortDescriptors 基于另一个 NSArray 对 NSArray 进行排序

标签 ios objective-c sorting

我有一个 NSArraystrings不遵循模式的对象,例如:

D C A Z X。

当我尝试对类似的 array 进行排序时按升序,我得到:

A C D X Z。

这不是我想要的结果,我需要实现与引用数组相同的模式。我只是不确定如何使用 NScomparisonResultNSSortDescriptor .

第二个array ,可能不完全相同,但我需要有相同的顺序。例如,也许我有 D X A。基于引用 array我需要得到 D A X。

更新:

好的,这是我的代码:

- (PFQuery *)queryForTable {
    PFQuery *query = [PFQuery queryWithClassName:self.parseClassName];

     // This is the reference array
     NSArray *labels = [@"Café da Manhã", @"Meio da Manhã", @"Almoço", @"Meio da Tarde", @"Final da Tarde", @"Jantar", @"Pós-Treino"];

    NSSortDescriptor *descriptor = 
    [NSSortDescriptor sortDescriptorWithKey:@"refeicao" ascending:YES comparator:^NSComparisonResult(id obj1, id obj2) {
        NSUInteger index1 = [labels indexOfObject:obj1];
        NSUInteger index2 = [labels indexOfObject:obj2];
        return index1 - index2;
    }];

    [query orderBySortDescriptor:descriptor];
    return query;
}

我有一个数组 PFObject s,我需要通过键 refeicao 订购.

最佳答案

您将需要编写自己的比较方法(可以与排序描述符相关联,因为您可以将其实现为 NSComparator )。

此方法需要在引用数组中找到要比较的 2 个字符串,并使用索引位置进行比较。不会比较实际值,一切都是关于引用数组中相应字符串的位置。

关于ios - 使用 sortDescriptors 基于另一个 NSArray 对 NSArray 进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21879457/

相关文章:

javascript - 你可以隐藏由数组渲染的某些 react 片段吗?

iphone - UITableView 使用 plist 制作一个 pervious 和 next 按钮?

iphone - iOS:删除由NSArray创建的UIImageView实例?

ios - Apple iAd 在 ios 应用程序的第一天

iphone - 将两个按钮放入一个 UITableViewCell

objective-c - 如何在 Cocoa 中从 MP3 文件中提取 ID 标签?

iphone - 在 iOS 设备上而不是在模拟器上运行时出现 SIGABRT 错误

ios - 定义ivar的最佳方式是什么?

C - 从数组中删除重复项并将这些重复项存储在另一个数组中

java - Java 中数组列表出现越界异常错误