0

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

    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];

但是得到错误...

4

1 回答 1

0

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

于 2013-05-25T10:35:02.440 回答