带有 ANY 和“=nil”的 NSPredicate 不起作用

NSPredicate with ANY and "=nil" doesn't work

这个条件有效

NSPredicate *predicate = [NSPredicate predicateWithFormat:
       @"ANY region.beacons.major = %d",rangedBeacon.major.intValue];

但这不是

NSPredicate *predicate = [NSPredicate predicateWithFormat:
       @"ANY region.beacons.minor = nil"];

beacons 是内部区域对象的列表。 Major 和 Minor 的类型为 NSNumber

你可以试试这个:

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"ANY region.beacons.minor = $minor"];
predicate = [predicate predicateWithSubstitutionVariables:
[NSDictionary  dictionaryWithObject:[NSNull null] forKey: @"minor"]];

我找到了解决方案

因为 ANY 和 "=nil" 不能处于相同的条件(这里有解释 Core Data, NSPredicate, ANY key.path == nil)?这个问题的解决方案看起来像:

NSPredicate *predicate = [NSPredicate predicateWithFormat:
      @"SUBQUERY(region.beacons, $x, $x.minor == nil)"];