NSPredicate 比较相同的字符串数组?
NSPredicate to compare identical string arrays?
是否可以使用nspredicate 来比较一个NSArray 是否完全等于另一个NSArray 的字符串?我需要这个通过谓词的圆顶因为它可能我会把这个谓词添加到一个复合谓词中。
我要比较的数组是 NSDictionary 的 属性。
所以答案是两者的混合,我确实使用了 predicatewithformat,但在@akashivskyy 和@avi 的启发下,在内部的字符串中发挥了创意
[predicatesArray addObject:[NSPredicate predicateWithFormat:@"ANY dynamic.values == %@", arr]];
编辑: 正如 Avi(部分)建议的那样,您可以使用相等谓词:
NSArray *otherArray = @[ @"foo", @"bar" ];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"self == %@", otherArray];
[predicate evaluateWithObject:@[ @"foo", @"bar" ]]; // YES
[predicate evaluateWithObject:@[ @"baz", @"qux" ]]; // NO
或者,如果您以后在格式字符串方面遇到任何问题,您可以始终使用块谓词来执行您自己的逻辑:
NSArray *otherArray = @[ @"foo", @"bar" ];
NSPredicate *predicate = [NSPredicate predicateWithBlock:^(NSArray *evaluatedArray, NSDictionary<NSString *, id> *bindings) {
return [evaluatedArray isEqualToArray:otherArray];
}];
// use the predicate
是否可以使用nspredicate 来比较一个NSArray 是否完全等于另一个NSArray 的字符串?我需要这个通过谓词的圆顶因为它可能我会把这个谓词添加到一个复合谓词中。
我要比较的数组是 NSDictionary 的 属性。
所以答案是两者的混合,我确实使用了 predicatewithformat,但在@akashivskyy 和@avi 的启发下,在内部的字符串中发挥了创意
[predicatesArray addObject:[NSPredicate predicateWithFormat:@"ANY dynamic.values == %@", arr]];
编辑: 正如 Avi(部分)建议的那样,您可以使用相等谓词:
NSArray *otherArray = @[ @"foo", @"bar" ];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"self == %@", otherArray];
[predicate evaluateWithObject:@[ @"foo", @"bar" ]]; // YES
[predicate evaluateWithObject:@[ @"baz", @"qux" ]]; // NO
或者,如果您以后在格式字符串方面遇到任何问题,您可以始终使用块谓词来执行您自己的逻辑:
NSArray *otherArray = @[ @"foo", @"bar" ];
NSPredicate *predicate = [NSPredicate predicateWithBlock:^(NSArray *evaluatedArray, NSDictionary<NSString *, id> *bindings) {
return [evaluatedArray isEqualToArray:otherArray];
}];
// use the predicate