Core data 无关实体的CoreData获取谓词

Core data 无关实体的CoreData获取谓词,core-data,ios5,nspredicate,Core Data,Ios5,Nspredicate,我无法为无关实体执行CoreData获取请求。假设我有一个包含3个实体的对象模型:Message、User和Advisor 我希望这3个对象彼此无关。因此,邮件确实具有属性senderEmail和receiverEmail,而User和Advisor确实具有属性email 但同样,这些对象之间没有进一步的关系。 例如,我现在希望由顾问或用户获取最新(newst)消息。但是既然对象没有连接,我应该如何做这个获取谓词呢 这在一个提取请求中是否可能实现,或者我是否需要将每个对象分别提取到一个数组中,然

我无法为无关实体执行CoreData获取请求。假设我有一个包含3个实体的对象模型:
Message
User
Advisor

我希望这3个对象彼此无关。因此,
邮件
确实具有属性
senderEmail
receiverEmail
,而
User
Advisor
确实具有属性
email

但同样,这些对象之间没有进一步的关系。
例如,我现在希望由顾问或用户获取最新(newst)
消息。但是既然对象没有连接,我应该如何做这个获取谓词呢

这在一个提取请求中是否可能实现,或者我是否需要将每个对象分别提取到一个数组中,然后进行进一步的操作以获得所需的内容?

Alexander

如果这些实体彼此不相关,则需要执行不同的获取请求来获取数据

例如,您可以获取最新的
消息
设置请求,如下所示:

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];
要按日期排序,您只需在
消息
属性中添加一个名为
insertionDate
(类型为
NSDate
)的属性,即可按日期排序

当您执行请求时

NSArray* results = [messageFetch executeFetchRequest:&error];
数组
结果
将包含(仅)
消息
元素

为什么需要单独维护这些实体


希望能有所帮助。

谢谢!我需要单独维护这些实体,因为我的模型由比上述三个实体多得多的实体组成。我不希望有一个所有实体之间都有关系的巨大网格模型。因此,我认为最好将一些关系建模为获取的属性…@Alexander不客气,如果您发现日期建议有用,也可以向上投票。:-)