我正在尝试使用 NSSortdescriptor 使用指向 NSDate 值的键对 NSFetchRequest 结果进行排序。我的获取结果完全随机,没有明确的原因。
我正在使用的 NSManagedObjectContext 是通过在 NSOperation 子类上创建的嵌套子上下文中保存的内容进行更新的。我知道这一切都成功完成,因为我可以从父(主)上下文获取所需的所有数据。从它获取只是不会按日期排序!
奇怪的是;用于选择两个日期之间的实体(称为“推文”)的谓词效果很好!
这是一些代码来说明我的问题:
NSSortDescriptor* timeDescriptor = [NSSortDescriptor
sortDescriptorWithKey:@"time"
ascending:NO
selector:@selector(compare:)];
NSFetchRequest* request = [NSFetchRequest fetchRequestWithEntityName:@"Tweet"];
[request setSortDescriptors:[NSArray arrayWithObjects:timeDescriptor, nil]];
NSPredicate* predicate = [NSPredicate predicateWithFormat:@"((time >= %@) AND (time <= %@))",startDate,endDate];
[request setPredicate:predicate];
NSManagedObjectContext* context = [[NSManagedObjectContext alloc] initWithConcurrencyType:NSPrivateQueueConcurrencyType];
[context setParentContext:[[NSApp delegate] managedObjectContext]];
[context performBlock:^{
NSError* error = nil;
NSArray* results = nil;
results = [context executeFetchRequest:request error:&error];
// Results here are not ordered correctly
// 2nd try sorting results …Run Code Online (Sandbox Code Playgroud)