エンティティフォルダに対してフェッチ要求を実行しようとしていますが、ソート時にxyz
という名前のフォルダを最後のオブジェクトにします。NSSortDescriptorが呼び出されていません
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription
entityForName:@"Folder" inManagedObjectContext:appDelegate.managedObjectContext];
[fetchRequest setEntity:entity];
NSSortDescriptor *lastDescriptor =
[[[NSSortDescriptor alloc] initWithKey:@"folderName" ascending:YES comparator:^NSComparisonResult(NSString* name1, NSString* name2) {
NSLog(@"descriptor");
if ([name1 isEqualToString:@"xyz"]) {
return NSOrderedAscending;
}
if ([name2 isEqualToString:@"xyz"]) {
return NSOrderedDescending;
}
return [name1 compare:name2];
}] autorelease];
[fetchRequest setSortDescriptors:[NSArray arrayWithObject:lastDescriptor]];
[fetchRequest setFetchBatchSize:5];
NSFetchedResultsController *theFetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest managedObjectContext:appDelegate.managedObjectContext sectionNameKeyPath:nil cacheName:nil];
self.fetchedResultsController = theFetchedResultsController;
self.fetchedResultsController.delegate=self;
[fetchRequest release];
[theFetchedResultsController release];
NSError *error;
if (![[self fetchedResultsController] performFetch:&error]) {
NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
exit(-1); // Fail
}
NSLogステートメントのどれも呼び出されていません。彼らは?フォルダxyzは最後に表示されませんが、すべてがアルファベット順に並べ替えられます。私は何か間違っているのですか?
編集:投稿者の完全なコード
私はおそらくダムの質問ですが、実際にフェッチを実行していますか?これはソートを設定するだけです。 – danh
さて、私は結果を得る、彼らはちょうど適切にソートされていません。私は呼び出している唯一のソート記述子ですが、アルファベット順に結果を得ることになります。 – Snowman
NSLogステートメントが表示されるはずですか? – Snowman