【问题标题】:How to filter Core Data by entities not in relationship如何按不相关的实体过滤核心数据
【发布时间】:2013-11-04 22:24:19
【问题描述】:

我有一个 NSManagedObject SchoolClass,它与学生有一个多对多的关系。当我想通过使用查找包含指定学生的 SchoolClasses 时,我可以使用它,

NSPredicate* predicate = [NSPredicate predicateWithFormat:@"(ANY students == %@)", student];

如何设置 NSPredicate 以返回不包含指定学生的 SchoolClasses 的 NSArray?我认为像下面这样的东西会起作用,但它不起作用。

NSPredicate* predicate = [NSPredicate predicateWithFormat:@"(NONE students IN %@)", student];

【问题讨论】:

    标签: ios core-data nspredicate nsmanagedobject


    【解决方案1】:

    IN 在右侧是一个集合时使用,例如学生数组。试试这个谓词:

    [NSPredicate predicateWithFormat:@"(NONE students = %@)", student];
    

    这也等价于ALL students != %@

    这将只返回不包括指定学生的 SchoolClasses。

    【讨论】:

    • 感谢您的回复。我相信它正确地回答了我提出的问题。我犯了为这个问题简化我的 NSPredicate 示例的错误,所以不幸的是,对于我更复杂的逻辑(我没有在这个问题中提出),它没有按预期工作。此外,如果我尝试,@"(ALL students != %@)"... 它会崩溃并显示“不支持的谓词(null)”消息。我将使用我试图过滤的完整 NSPredicate 逻辑打开另一个问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多