2015-05-06 54 views

回答

10

让我们组的列表。每个小组都有类型人员。每个人都有一个年龄。

ALL members.age> 30

意味着你会发现成员都是年龄超过30.你不会找到一组至少一个单个成员为30岁或以下的一组。

任何members.age> 30

意味着你会发现一组比30年长的至少一员,您将找不到为30岁或以下的所有成员的组。

Group1  > 30 
    Amin 45 YES 
    Chris 29 NO 
      --- 
All   NO (because Chris is too young) 
Any   YES (because Amin is old enough) 

Group2  > 30 
    Amin 45 YES 
    Foo 35 YES 
      --- 
All   YES (because all members are old enough) 
Any   YES (because at least one member is old enough) 


Group3  > 30 
    Chris 29 NO 
    Bar 21 NO 
      --- 
All   NO (because at least one member is too young) 
Any   NO (because all members are too young) 

由于所有成员(Amin,Foo)都与谓词相匹配,所以找到Group2的ALL谓词。使用ANY谓词可以找到两个组,因为在这两个组中至少有一个成员与谓词匹配。

+0

注意,如果您在针对SQLite存储类型的核心数据读取中使用此谓词,则存在重要限制。阅读核心数据编程指南的整个读取谓词和排序描述符部分:https://developer.apple.com/library/ios/documentation/Cocoa/Conceptual/CoreData/Articles/cdPersistentStores.html#//apple_ref/doc/ UID/TP40002875-SW11 –

5

ALLANY是基本逻辑运算符。

ALL predicatepredicate的计算结果为真时 EVERY项目的计算结果为true。

ANY predicatepredicate的计算结果为true至少1项时,计算结果为true。

请注意,您始终可以使用ANY表示ALL谓词,反之亦然,例如ALL condition等同于NOT (ANY NOT(condition))

可以在Predicate Programming Guide找到更多的信息,章聚合操作

+0

请参阅我对阿敏的回答的评论。如果在SQLite存储中使用带有Core Data提取请求的谓词,则会有一些限制。 –

+0

还有更多,没有提到。例如,你不能使用计算的属性。 (基本上你可以这样说:所有不是简单的SQL查询都不能完成。)但是这肯定没有任何标准可以将ALL与ALLY区分开来,因为这个限制适用于两者。 –

相关问题