对不起,如果我让任何人感到困惑,但我会尽力描述我的问题。
我有一个名为 Document 的实体和另一个名为 Customer 的实体,该 Document 有一个名为 CustomerID 的属性,该属性是从 Customer 属性 CustomerID 分配的,并且它有一个 updatedDate 属性。
我想获取最近的 10 个文档,但只获取每个 CustomerID 的最新文档。
对不起,如果我让任何人感到困惑,但我会尽力描述我的问题。
我有一个名为 Document 的实体和另一个名为 Customer 的实体,该 Document 有一个名为 CustomerID 的属性,该属性是从 Customer 属性 CustomerID 分配的,并且它有一个 updatedDate 属性。
我想获取最近的 10 个文档,但只获取每个 CustomerID 的最新文档。
如果我理解正确,您想从指定客户那里获得 10 个最新的文档吗?这很容易。
NSFetchRequest *request = [[NSFetchRequest alloc] init];
request.entity = [NSEntityDescription entityForName:@"Document" inManagedObjectContext:managedObjectContext];//Specify the entity Name
request.predicate = [NSPredicate predicateWithFormat:@"customerID = %@",customerID];//Specify the ID you need
request.sortDescriptors = [NSArray arrayWithObject:[NSSortDescriptor sortDescriptorWithKey:@"updatedDate" ascending:YES]];//Sorted by most recent ones
request.fetchLimit = 10;//You'll get ten latest Documents
NSError *error = nil;
latestDocuments = [managedObjectContext executeFetchRequest:request error:&error];
正如我们发现的那样,任务是获取十个最近的文档,但每个客户只有一个,我真的认为没有办法以某种方式有效地做到这一点(我的意思是,没有 IN 查询,它将包含您已经获取的客户 ID) ,但是要为您的客户添加新的一对一的情感- latestDocument,并与之相反,只需对文档提出请求,其中isLatestToCustomer不为零。