CoreData子查询与多个条件,关系

第一次海报,长时间阅读器/搜索!

我试图从一个子查询过一个一对多的关系CoreData返回信息。 我有两个实体的客户和消息。 每个客户可以有多个消息。

我所试图做的是从客户表返回账户数为具有类型“临时停车”的比明天的日期生效日期少的消息每一位客户。

我尝试使用任何和NONE组合,无子查询,但发现他们,因为我想没有工作。 最后,我使出了子查询。

由于我有它的下方,它返回客户与过去的温度 - 停止伯爵,但我需要这些客户的帐户号码来代替。 需要明确的是,最终的目标是确定如果客户也有类型“重新启动”的消息之前,明天的日期。 这意味着它们不再停止,应包括在活跃客户的列表。

(曾在这里的形象,但不能发布,因为我是一个新用户)

NSPredicate *predTemps = [NSPredicate predicateWithFormat:@"SUBQUERY(messages, $m, $m.effective < %@ && $m.type == 'Temp Stop')[email protected] > 0", tomorrow];

以上谓词返回客户以往的温度 - 停止的数量。 我也一直能够引用子查询作为第三个条件里面的帐号,但想回到账号,不指定。

NSPredicate *predTemps = [NSPredicate predicateWithFormat:@"SUBQUERY(messages, $m, $m.effective < %@ && $m.type == 'Temp Stop').account", tomorrow];

这将是正是我想要的 - 它不工作,虽然。 我不是究竟是如何实现的子查询,所以也许还有另外一个解决方案,以及清晰。

非常感谢你!

--------------解决方案-------------

由于您的查询在属性上的唯一过滤Message的实体有你不反对直接运行谓词的理由Message的实体,而不是它的“父母”?

看来,根据你的问题的信息,你可以运行一个NSFetchRequest对你的Message的实体,然后如果你需要有关其父的信息,你可以通过反向关系访问它。

这将使你通过返回的访问帐户Message的实例。

请记住,核心数据是一个对象图不是一个数据库。 所以,你想,而不是列(账户)将返回与对象(信息)工作。 一旦你的对象回来,你可以得到账户价值出来。

UPDATE

这是伪代码来解释我的意思。

NSManagedObjectContext *moc = ...;
NSDate *effectiveDate = ...;
NSError *error = nil;
NSFetchRequest *request = nil;
NSPredicate *pred = nil;

request = [NSFetchRequest fetchRequestWithEntityName:@"Message"];
pred = [NSPredicate predicateWithFormat:@"effective < %@ && type == 'Temp Stop'", effectiveDate];
[request setPredicate:pred];

NSArray *results = [moc executeFetchRequest:request error:&error];
NSAssert2(!error || results, @"Error fetching results: %@\n%@", [error localizedDescription], [error userInfo]);

NSArray *customers = [results valueForKey:@"customer"];

return customers;

分类:目标C 时间:2015-03-16 人气:5
分享到:

相关文章

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 1.435 (s). 10 q(s)