objective-c - NSSortDescriptor 应该对 NSDates 进行排序

标签 objective-c sorting core-data nsfetchrequest nssortdescriptor

看起来 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/

相关文章:

objective-c - CFReadStreamRef 始终为 nil

objective-c - ConvertBaseToScreen 方法现已弃用

objective-c - 嵌套语句而不是创建新的一次性对象?

javascript - js排序时保留选中项

iphone - 以编程方式使用 ios-core 数据创建新表

iOS:是否可以将注释放在 map 的中心并在注释始终保持在中心的情况下移动 map ?

python - 我需要按日期对 python 列表列表进行排序

javascript - 单击图像更改图像和调用功能

swift - 如何反射(reflect) NSManagedObject 的非托管属性

ios - managedObjectContext 返回 nil