1

数字を含む文字列を順番に返そうとしていますが、現在のソート記述子が失敗する場所がいくつかあります (以下のコードを参照)。日番号、週番号、およびカテゴリでデータを返そうとしています。次に例を示します。

1日目、1週目
2日目、1週目

現在、ソートは第 2 週に順不同になります。

10日目、2週目
11日目、2週目
8日目、2週目
9日目 2週目

前回のソート記述子で localizedCompare を使用してみましたが、役に立ちませんでした。助けてくれてありがとう!

- (NSFetchedResultsController *)fetchedResultsController {
    if (!fetchedResultsController ) {
        NSFetchRequest *request = [[NSFetchRequest alloc] init];

        NSEntityDescription *entity = [NSEntityDescription entityForName:@"Workouts" inManagedObjectContext:[Utils appDelegate].managedObjectContext];
        [request setEntity:entity];

        NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"w_category" ascending:YES];
        NSSortDescriptor *sortDescriptor2 = [[NSSortDescriptor alloc] initWithKey:@"weekNo"
                                                                        ascending:YES];
        Workouts *changeSort;
        NSString *sortingChoice;

        if ([changeSort.w_scoring isEqualToString:@"scoring"]){
            sortingChoice = @"w_programDay";
        } else if (![changeSort.w_scoring isEqualToString:@"scoring"]){
            sortingChoice = @"w_name";
        }

        NSSortDescriptor *sortDescriptor3 =[[NSSortDescriptor alloc] initWithKey:[NSString stringWithFormat:@"%@", sortingChoice] ascending: YES selector: @selector(localizedCompare:)];

        NSArray *sortDescriptors = [NSArray arrayWithObjects:sortDescriptor, sortDescriptor2,sortDescriptor3, nil];
        [request setSortDescriptors:sortDescriptors];

        NSFetchedResultsController *newController = [[NSFetchedResultsController alloc] initWithFetchRequest:request managedObjectContext:managedObjectContext sectionNameKeyPath:@"w_category" cacheName:nil];

        newController.delegate = self;
        self.fetchedResultsController = newController;
    }

    return fetchedResultsController;
}
4

0 に答える 0