我有一个 NSArray
与 strings
不遵循模式的对象,例如:
D C A Z X。
当我尝试对类似的 array
进行排序时按升序,我得到:
A C D X Z。
这不是我想要的结果,我需要实现与引用数组相同的模式。我只是不确定如何使用 NScomparisonResult
或 NSSortDescriptor
.
第二个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/