2009-09-25 44 views
0

我無法使用NSSortDescriptor對NSNumber進行排序。無論出於何種原因,它都不會按照正確的順序排序。我究竟做錯了什麼?如何將NSNumber與NSSortDescriptor進行排序?

- (NSNumber *)sortNumber { 

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

return sum; 
} 

它被定義爲xcdataModel中的一個Int32,並被這個類調用來排序。

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

編輯:是的,在寒冷的白天,這需要更多的解釋。我會盡力解釋這個項目。這是一個CoreData應用程序,值'容量'和'可用性'是通過用SAX解析XML文件並將它們附加到它們被定義爲字符串的被管理對象模型派生的,最初它們在XML中是數字。

然後,這些被定義在一個類中,上面的計算已經被創建並附加到相同的對象模型(如果上面的代碼是正確的,那麼這也許是問題所在)。所有這些都是爲了獲得我想用來對TableView進行排序的百分比值。 (順便說一句,我意識到他們需要交換,oops)代碼的第二位是使用NSFetchResultsController和ManagedObjectContext發生這種情況的地方。我知道這一點工作,因爲我也排序此列表的其他屬性設置爲如果selectedSegmentIndex == 0等,他們都排序正確。

我希望這樣做更有意義。

+0

這是一個CoreData應用程序?你能否請多包含一些代碼來幫助我們解決問題? – slf 2009-09-25 03:10:25

+0

我已經嘗試在項目中添加更多細節,參見上文。像往常一樣,這些東西很難知道停止在哪裏。管理對象模型很難發佈,但基本上它只附加了一個關係,這不是這個標準。也許它應該是? – Jim 2009-09-26 13:28:18

回答

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

[request setSortDescriptors:sortDescriptors];

您可以在不調用比較方法的情況下使用NSSortDescriptor。它會根據你想要的順序排序。

相關問題