亚历山大,
如果这些实体彼此不相关,您需要执行不同的获取请求来获取您的数据。
因此,例如,您可以获取最新的Message
设置请求,如下所示:
NSPredicate* predicate = [NSPredicate predicateWithFormat:@"senderEmail == %@", grabbedEmail];
NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"insertionDate" ascending:YES];
NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:sortDescriptor, nil];
NSFetchRequest *messageFetch = [[NSFetchRequest alloc] init];
[messageFetch setEntity:[NSEntityDescription entityForName:@"Message" inManagedObjectContext:yourContext]];
[messageFetch setPredicate:predicate];
[messageFetch setSortDescriptors:sortDescriptors];
[messageFetch setFetchLimit:1];
要检索grabbedEmail
(如果没有),您需要使用特定谓词设置请求。这同样适用于接收方电子邮件。例如。
NSPredicate* predicate = [NSPredicate predicateWithFormat:@"userId == %@", @"someUserId"];
NSFetchRequest* userFetch = [[NSFetchRequest alloc] init];
[userFetch setEntity:[NSEntityDescription entityForName:@"User" inManagedObjectContext:yourContext]];
[userFetch setPredicate:predicate];
[userFetch setFetchLimit:1];
NSArray* userResults = [userFetch executeFetchRequest:&error];
User* retrievedUser = (User*)[userResults objectAtIndex:0];
NSString* grabbedEmail = [retrievedUser email];
要按日期排序,您可以简单地向Message
实体添加一个名为insertionDate
(类型NSDate
)的属性,该属性允许您按日期排序。
当你执行请求时
NSArray* results = [messageFetch executeFetchRequest:&error];
该数组results
将包含Message
您要查找的(唯一)元素。
为什么您需要维护单独的这些实体?
希望有帮助。