看起来 NSSortDescriptor 应该是一个相当容易使用的类。
我在 CoreData 中存储了一个实体,该实体具有一个 NSDate 类型的属性,恰本地命名为 @"date"。我正在尝试将排序描述符应用于 NSFetchRequest,但它似乎没有返回我希望的结果。
我希望的结果是简单地按时间顺序排列日期,而是按照它们添加到 CoreData 的顺序返回。
或许您可以提供指导?
参数“升序”控制排序吗?
一些代码:
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entityDesc = [NSEntityDescription entityForName:@"Data" inManagedObjectContext:self.managedObjectContext];
[fetchRequest setEntity:entityDesc];
[fetchRequest setFetchBatchSize:10];
NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"date" ascending:YES];
NSArray *sortDescriptors = [NSArray arrayWithObjects:sortDescriptor, nil];
[fetchRequest setSortDescriptors:sortDescriptors];
NSArray *fetchedObjects = [self.managedObjectContext executeFetchRequest:fetchRequest error:&error];
最佳答案
对我来说,单独的排序例程(函数或 block )看起来有点矫枉过正。我经常使用您在代码中显示的排序描述符方法按日期属性对核心数据实体进行排序。它每次都能完美运行。
显然,一定还有其他错误。
- 检查类型是否在您的托管对象模型编辑器和类文件(
Data.h
,在您的情况下)中设置正确。 - 此外,请检查您是否未操纵此属性以便创建顺序随之而来。
- 此外,请确保您没有将此属性与
NSDate
类型的另一个属性混淆。
关于objective-c - NSSortDescriptor 应该对 NSDates 进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12145545/