【问题标题】:NSPredicate with relationship child entity property具有关系子实体属性的 NSPredicate
【发布时间】:2014-04-30 13:44:55
【问题描述】:

我有这种模特情况-

  1. Group 实体与名为 latestEventEvent 实体处于一对一关系。
  2. Event 实体有一个名为“WeddingEvent”的子实体,它是众多子事件之一。
  3. WeddingEvent 是唯一一个拥有名为 present 的属性的人
  4. 如果latestEvent 属于“WeddingEvent”,我正在尝试过滤Group 以使其不被获取。

由于我无法通过 className 或 entityName 获取,我尝试过:

NSPredicate *LatestEventValidity = [NSPredicate predicateWithFormat:@"latestEvent.present != nil"];

 NSPredicate *LatestEventValidity = [NSPredicate predicateWithBlock:^BOOL(id evaluatedObject, NSDictionary * bindings) {
        OOVGroup *group = evaluatedObject;
        return [group.latestEvent respondsToSelector:@selector(setPresent:)];
    }];

但他们都失败了。

这里有什么帮助吗?

【问题讨论】:

    标签: core-data nspredicate nsfetchrequest


    【解决方案1】:

    第一个谓词不起作用,因为并非所有 Event 对象都响应“现在” 选择器。第二个谓词不起作用,因为您不能使用基于块的(或任何 核心数据获取请求中的基于 Objective-C 的谓词。

    唯一的解决方案可能是为您的“事件”实体添加一个(字符串或整数)“类型”属性,以便您可以使用诸如"lastEvent.type != 'Wedding'" 之类的谓词进行过滤。

    【讨论】:

    • 感谢您澄清为什么我的尝试不起作用。你的想法很好,但我有遗留问题,因为那里的许多用户已经在使用这个应用程序,我想避免迁移。我所做的是将当前属性移动到轻量级迁移支持的父事件实体。谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-19
    相关资源
    最近更新 更多