2009-09-25 2 views
0

У меня возникли проблемы с сортировкой NSNumber с помощью NSSortDescriptor. По какой-то причине он не будет сортироваться в правильном порядке. Что я делаю не так?Как вы сортируете NSNumber с помощью NSSortDescriptor?

- (NSNumber *)sortNumber { 

NSNumber *sum = [NSNumber numberWithFloat:([self.capacity floatValue]/[self.availability floatValue])]; 

return sum; 
} 

Он определяется как Int32 в xcdataModel и называется этим классом для сортировки.

- (NSFetchedResultsController *)fetchedResultsController { 
if (fetchedResultsController == nil) { 
    NSFetchRequest *fetchRequest = [[[NSFetchRequest alloc] init] autorelease]; 
    [fetchRequest setReturnsObjectsAsFaults:NO]; 
    [fetchRequest setEntity:[NSEntityDescription entityForName:@"Event" inManagedObjectContext:managedObjectContext]]; 
    NSArray *sortDescriptors = nil; 
} if ([fetchSectioningControl selectedSegmentIndex] == 0) { 
     sortDescriptors = [NSArray arrayWithObject:[[[NSSortDescriptor alloc] initWithKey:@"sortNumber" ascending:YES selector:@selector(compare:)] autorelease]]; 
} 
[fetchRequest setSortDescriptors:sortDescriptors]; 

EDIT: Да, в холодный свет дня это требует немного большего объяснения. Я попытаюсь объяснить проект. Это приложение CoreData, «емкость значений» и «доступность» основаны на анализе XML-файла с SAX и прикреплении его к модели управляемого объекта, где они определены как строки, изначально они были бы числовыми в XML.

Затем они определены в классе, в котором выполнены расчеты и прикреплены к одной и той же объектной модели (если приведенный выше код прав, то, возможно, именно здесь проблема?). Все это было в попытке получить процентное значение, которое я хотел бы использовать для сортировки TableView. (Кстати, я понимаю, что им нужно обмениваться, oops) Второй бит кода - это то, где это происходит с помощью NSFetchResultsController и ManagedObjectContext. Я знаю, что этот бит работает, потому что я также сортирую этот список по другим атрибутам, установленным в if selectedSegmentIndex == 0 и т. Д. Они все сортируются правильно.

Надеюсь, это будет иметь больше смысла.

+0

Это приложение CoreData? не могли бы вы включить немного больше кода, чтобы помочь нам решить проблему? – slf

+0

Я попытался добавить больше деталей к проекту, см. Выше. Как всегда с такими вещами трудно понять, где остановиться. Управление объектной моделью трудно опубликовать, но в основном она имеет только одно отношение, которое не является этим критерием. Может быть, это должно быть? – Jim

ответ

0
NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"sortNumber" ascending:YES]; 
NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:sortDescriptor, nil]; 

[request setSortDescriptors: sortDescriptors];

Вы можете использовать NSSortDescriptor без звонка способ сравнения. Он будет сортировать себя в желаемом порядке.

 Смежные вопросы

  • Нет связанных вопросов^_^