自定义NSSortDescriptor NSFetchedResultsController

我有一个自定义的“排序”,我目前正在执行一组数据。 我现在需要在NSFetchedResultsController中的fetchedObjects上执行此类排序。 我们所有的表数据都与核心数据获取结果一起工作,因此用泛型数组替换数据源一直存在问题。

由于NSFetchedResultsController可以使用NSSortDescriptors,因此它是最好的路线。 问题是我不知道如何将这种排序算法转换为自定义比较器。

如何将其转换为自定义比较器(如果可能)? (如果不是我在使用NSFetchedResultsController时如何获得所需的排序结果)。 实质上,“优先级”字段可以是“高”“正常”或“低”,并且列表需要按照该顺序排序。

+(NSArray*)sortActionItemsByPriority:(NSArray*)listOfActionitemsToSort
{
    NSMutableArray *sortedArray = [[NSMutableArray alloc]initWithCapacity:listOfActionitemsToSort.count];
    NSMutableArray *highArray = [[NSMutableArray alloc]init];
    NSMutableArray *normalArray = [[NSMutableArray alloc]init];
    NSMutableArray *lowArray = [[NSMutableArray alloc]init];

for (int x = 0; x < listOfActionitemsToSort.count; x++)
{
    ActionItem *item = [listOfActionitemsToSort objectAtIndex:x];

    if ([item.priority caseInsensitiveCompare:@"high"] == NSOrderedSame)
        [highArray addObject:item];
    else if ([item.priority caseInsensitiveCompare:@"normal"] == NSOrderedSame)
        [normalArray addObject:item];
    else
        [lowArray addObject:item];
}

[sortedArray addObjectsFromArray:highArray];
[sortedArray addObjectsFromArray:normalArray];
[sortedArray addObjectsFromArray:lowArray];

return sortedArray;
}

更新尝试使用NSComparisonResult块,但NSFetchedResultsController不允许

还尝试使用暂时的核心数据属性,然后计算我可以排序的字段。 但是这种排序发生在字段计算之前,所以不起作用。

我尝试设置每个优先级类型的部分 - 哪些工作。 但它没有以正确的顺序显示,显然你不能用核心数据来订购部分。

任何其他想法?


这个怎么样?

NSSortDescriptor *descriptor = [NSSortDescriptor sortDescriptorWithKey:@"priority" ascending:YES comparator:^NSComparisonResult(id obj1, id obj2) {
        if ([obj1 isEqualToString:obj2]) {
            return NSOrderedSame;
        } else if ([obj1 isEqualToString:@"high"] || [obj2 isEqualToString:@"low"]) {
            return NSOrderedAscending;
        } else if ([obj2 isEqualToString:@"high"] || [obj1 isEqualToString:@"low"]) {
            return NSOrderedDescending;
        }
        return NSOrderedSame;
    }];
链接地址: http://www.djcxy.com/p/6147.html

上一篇: Custom NSSortDescriptor for NSFetchedResultsController

下一篇: NSFetchedResultsController section sorting by class