NSSortDescriptor не работает

У меня есть основной объект данных под названием «TruckNumber», который имеет строку как единственное свойство. Строка обычно представляет собой целое число из 1-3 цифр (в виде строки), но иногда может содержать буквы, такие как TMP9. Имя свойства — «itsNotANumma». Я делаю запрос на выборку для заполнения сборщика, но они не сортируются, и я не знаю, почему. Я использовал эту точную технику для других объектов для других сборщиков, и у меня никогда не было проблем. Пожалуйста, помогите... Вот соответствующий код:

// Fetch truck numbers
NSFetchRequest *truckNumberFetchRequest = [[NSFetchRequest alloc] init];

NSEntityDescription *truckEntity = [NSEntityDescription entityForName:@"TruckNumber" inManagedObjectContext:self.managedObjectContext];
[truckNumberFetchRequest setEntity:truckEntity];

// Sort Descriptor
NSSortDescriptor *truckDescriptor = [[NSSortDescriptor alloc] initWithKey:@"itsNotANumma" ascending:YES];

NSArray *truckSortDescriptors = [[NSArray alloc] initWithObjects:truckDescriptor, nil];
[inventoryFetchRequest setSortDescriptors:truckSortDescriptors];
error = nil;
NSArray *truckResults = [managedObjectContext executeFetchRequest:truckNumberFetchRequest error:&error];

if (error)
    NSLog(@"Unresolved error while saving context: %@, %@", error, [error userInfo]);

truckNumbersArray = [[NSMutableArray alloc] init];
for (TruckNumber *truckNumber in truckResults)
{
    [truckNumbersArray addObject:truckNumber.itsNotANumma];
}

Вот моя модель данных для номера грузовика: введите здесь описание изображения

Вот результаты:

введите здесь описание изображения


person HackyStack    schedule 11.10.2012    source источник


Ответы (2)


Похоже, у вас простая опечатка:

[inventoryFetchRequest setSortDescriptors:truckSortDescriptors];

Должно быть:

[truckNumberFetchRequest setSortDescriptors:truckSortDescriptors];

В любом случае, я бы предположил, прочитав этот код.

person mattjgalloway    schedule 11.10.2012
comment
Грррррррррр... Спасибо. Я приму ответ через 9 минут, когда это позволит мне. Спасибо. - person HackyStack; 11.10.2012
comment
Иногда за деревьями не видно леса. Еще раз спасибо. Я повешу голову от стыда на 30 секунд, чтобы поприветствовать вас :-) - person HackyStack; 11.10.2012
comment
Без проблем! Рад быть второй парой глаз, чтобы заметить опечатку :-). - person mattjgalloway; 11.10.2012

[NSSortDescriptor sortDescriptorWithKey:@"self" ascending:YES comparator:^(id obj1, id obj2){
    return [(NSString*)obj1 compare:(NSString*)obj2 options:NSNumericSearch]; 
}];

Он отлично работает, если у вас есть числа в диапазоне от 1 до 5000 или выше.

person Arsalan    schedule 08.01.2013