NSSortDescriptor сортирует строковое поле как число с неработающим блоком компаратора

У меня есть поле, полное идентификаторов от третьей стороны. Идентификаторы - это числа, но записанные в БД в виде строки.

Я хочу отсортировать выборку, отсортированную по этому идентификатору, по значению целого числа. Поэтому я добавляю это NSSortDescriptorк NSFetchRequest.

NSNumberFormatter *numFormatter = [[NSNumberFormatter alloc] init];
[numFormatter setNumberStyle:NSNumberFormatterDecimalStyle];
NSSortDescriptor *sortBy = [[NSSortDescriptor alloc] initWithKey:@"someId" ascending:YES comparator:^(id a, id b) {
    return [[numFormatter numberFromString:a] compare:[numFormatter numberFromString:b]];
}];
[fetchRequest setSortDescriptors:[NSArray arrayWithObject:sortBy]];

Но я получаю следующие результаты. Они по-прежнему сортируются как строка в алфавитном порядке.

730275292
73900038
730172867
7350727
830138437
835164
837287901
8338804
930274
9324376

Что я не понимаю в использовании этого блока компаратора?

РЕДАКТИРОВАТЬ 1 мая 2012 г. 9 :20:00 по восточному поясному времени

Чтобы проверить, используется ли блок компаратора, я попробовал следующее для сортировки на основе длины поля.

NSSortDescriptor *sortBy = [[NSSortDescriptor alloc] initWithKey:@"fbId" ascending:YES comparator:^(id a, id b) {
    if ([a length] < [b length]) {
        return NSOrderedAscending;
    } else if ([a length] > [b length]) {
        return NSOrderedDescending;
    } else {
        return NSOrderedSame;
    }
}];
[fetchRequest setSortDescriptors:[NSArray arrayWithObject:sortBy]];

Я все еще получаю результаты, отсортированные по алфавиту! Так что это заставляет меня думать, что блок компаратора даже не используется.

716164250
726354466
73900038
739600038
7450727
810138437
801164
801375346
8213997
5
задан Jinyoung Kim 1 May 2012 в 13:25
поделиться