我有两个实体:Department和DepartmentNews。每个部门都有一个或多个DepartmentNews Objects。在DepartmentNews内部,有一个newsTitle属性,并且有一个releaseDate属性。
我想获取所有这些Department对象,并使用相关的DepartmentNews newsTitle和最新的releaseDate对它们进行排序。
是否有可能为此做出谓词?可能是子查询?这样的事情怎么可能呢?我正在使用NSFetchedResultsController ...
答案 0 :(得分:2)
您的请求没有意义。由于某个部门有多个部门新闻对象,因此无法对所有部门进行排序。您可以通过一个来设置排序,但您需要确定哪一个。
首先要定义哪些一个你想要排序的新闻项目然后你可以构建其余的。
答案 1 :(得分:1)
您如何看待提取部门,然后使用关键路径作为排序描述符。我尝试编写这个代码:
NSFetchRequest *allDepartements = [[NSFetchRequest alloc] init];
[allDepartements setEntity:[NSEntityDescription entityForName:@"departements"
inManagedObjectContext:moc]];
// now specify the sorting
NSSortDescriptor *sortDesc = [[NSSortDescriptor alloc] initWithKey:@"departementNews.date"] ascending:YES];
[allDepartements setSortDescriptors:[NSArray arrayWithObject:sortDesc]];
[sortDesc release];
// performing the fetch without an NSFetchedResultsController
NSError *error = nil;
NSArray *result = [moc executeFetchRequest:allDepartements error:&error];
[allDepartements release];
您得到的是按最新新闻条目排序的一系列部门。然后,您可以使用KVC简单地获取新闻。
要立即使用NSFetchedResultsController,您只需替换执行fetch的lase块,并通过以下代码块保存到数组中:
NSFetchedResultsController *controller = [[NSFetchedResultsController alloc]
initWithFetchRequest:allDepartements
managedObjectContext:moc
sectionNameKeyPath:nil
cacheName:@"<#Cache name#>"];
[allDepartementsRelease];
其余的应该按预期工作。我之前从未使用NSFetchedResultsController,我曾经在mac上手动编码。