NSPredicate与ANY和“= nil”不起作用

时间:2016-09-13 06:22:25

标签: ios objective-c nspredicate

此条件有效

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

但这不是

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

信标是区域对象内的列表。主要和次要的类型为NSNumber

2 个答案:

答案 0 :(得分:0)

你可以试试这个:

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

答案 1 :(得分:0)

我找到了解决方案

因为任何和" = nil"不能处于相同的条件(解释在这里Core Data, NSPredicate, ANY key.path == nil)?解决这个问题的方法如下:

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