NSSortDescriptor使用相关对象中日期的最小值

时间:2013-10-23 22:28:43

标签: ios core-data nssortdescriptor

我有一个核心数据实体MediaAsset。我有另一个名为UploadAttempt,它跟踪我们将MediaAsset上传到我们的中央服务器所做的所有尝试。我想从第一个MediaAsset订购的数据存储区中提取UploadAttempt个。

MediaAsset有3 UploadAttempt s,A,B和C. UploadAttempt有一个attemptDate属性,我想为每个MediaAsset找到最早的UploadAttempt,并将其用作排序

我想创建一个NSSortDescript或类似的东西:

order by MediaAsset.uploadAttempts.attemptDate其中attemptDate是该特定MediaAsset的最早的尝试日期。

这有意义吗?任何帮助表示赞赏。

(注意:假设我无法向MediaAsset添加其他属性。这已经是现有数据,我无法改变它。)

1 个答案:

答案 0 :(得分:0)

如果我正确理解您的问题,以下内容应该有效。如果没有,请再次ping我,我们会一起理解并纠正它。

NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entityDesc = [NSEntityDescription entityForName:@"UploadAttempt" 
 inManagedObjectContext:self.managedObjectContext];
[fetchRequest setEntity:entityDesc];
NSError *error = nil;


NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"date" 
ascending:YES];
NSArray *sortDescriptors = [NSArray arrayWithObjects:sortDescriptor, nil];    

[fetchRequest setSortDescriptors:sortDescriptors];

NSArray *dateSortedAttempts = [self.managedObjectContext executeFetchRequest:fetchRequest  
error:&error];

NSSet* mediaAssets= [NSSet setWithArray:[items valueForKeyPath:@"@distinctUnionOfObjects.MediaAsset"]];