0

NSSortDescriptor を使用して NSNumber をソートするのに問題があります。何らかの理由で、正しい順序に並べ替えられません。私は何を間違っていますか?

- (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 アプリです。値 'capacity' と 'availability' は、SAX を使用して XML ファイルを解析し、それらを管理オブジェクト モデルに添付することで得られます。これらは文字列として定義されます。元々 XML では数値でした。

これらは、上記の計算が行われたクラスで定義され、同じオブジェクト モデルにアタッチされます (上記のコードが正しい場合、問題はおそらくここにあるのでしょうか?)。これはすべて、TableView の並べ替えに使用するパーセンテージ値を取得するための努力です。(ところで、私は彼らが交換する必要があることに気づきました、おっと)コードの 2 番目のビットは、NSFetchResultsController と ManagedObjectContext を使用してこれが行われる場所です。selectedSegmentIndex == 0 などの場合に設定された他の属性によってこのリストを並べ替えているため、このビットが機能することはわかっています。それらはすべて正しく並べ替えられます。

これがもう少し理にかなっていることを願っています。

4

1 に答える 1