核心数据签名排序描述符

时间:2013-05-25 10:24:11

标签: objective-c core-data

我想按标志对数据进行排序。在SQLite函数中“符号”工作正常。但在核心数据中我不能重复这一点。我试过这个:

    NSSortDescriptor* signSortDescriptor = [NSSortDescriptor sortDescriptorWithKey:@"id" ascending:NO comparator:^NSComparisonResult(NSNumber* obj1, NSNumber* obj2) {
        int val1 = sign([obj1 integerValue]);
        int val2 = sign([obj2 integerValue]);
        return (val1 < val2) ? NSOrderedAscending : (val1 > val2) ? NSOrderedDescending : NSOrderedSame;
    }];
    fetchRequest.sortDescriptors = @[signSortDescriptor];

在iOS 6.1上不起作用(错误:“不支持的NSSortDescriptor(不支持比较器块)”),在iOS 5.1上很好(我认为它在获得结果数组之后排序,但不确定)

试试这个:

    NSSortDescriptor* signSortDescriptor = [NSSortDescriptor sortDescriptorWithKey:@"sign(id)" ascending:NO];
    fetchRequest.sortDescriptors = @[signSortDescriptor];

但是得到错误......

1 个答案:

答案 0 :(得分:0)

您不需要按标志进行特殊比较。 如果idNSNumber,则只需按id对值进行排序。它们也将按标志排序,我认为不会对性能产生影响。