我想按'recordDate'将数据分成不同的部分,然后对于每个部分数据将按'elementName'按升序排序。以下是当前代码(不工作):当第一个描述符是NSDate时,多个NSSortDescriptor不工作
NSManagedObjectContext *context = self.tankDatabase.managedObjectContext;
NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"Log"];
request.sortDescriptors = [NSArray arrayWithObjects:[NSSortDescriptor sortDescriptorWithKey:@"recordDate" ascending:NO], [NSSortDescriptor sortDescriptorWithKey:@"elementName" ascending:YES selector:@selector(localizedStandardCompare:)], nil];
request.predicate = [NSPredicate predicateWithFormat:@"ownedBy = %@", self.tank];
self.controller = [[NSFetchedResultsController alloc]
initWithFetchRequest:request
managedObjectContext:context
sectionNameKeyPath:@"recordDate"
cacheName:nil];
self.controller.delegate = self;
NSError *error;
BOOL success = [self.controller performFetch:&error];
然而,当我尝试使用其他属性进行排序(例如:ASC的ElementName,价值DESC并将它们按的ElementName)它的工作,因为它应该。请注意,recordDate是数据模型中的'Date'类型和类中的NSDate。
另外recordDate包含分钟&秒,它需要分组到这个细节。
我试图搜索整个互联网类似的情况下,但我还没有找到任何解决方案的工作。我在代码中错过了什么?还是仅仅是一个苹果的错误?感谢您的时间和协助。
如果从第二个排序描述符中删除选择器会发生什么? CoreData对数据库中的东西进行排序,因此您不能使用自定义选择器或比较器进行排序描述符。 – 2012-08-15 09:59:52
如果我删除选择器,没有什么改变。 – 2012-08-15 15:11:59