有什么方法可以使用 XOR 作为谓词的运算符。
我有一个文件对象,我想知道是否有可用的英文文件。如果它没有英文版本,它应该会给我返回德文版本。如果两者都可用,则不应返回德语版本。这就是我需要 XOR 的原因。
例子:
[NSPredicate predicateWithFormat:@"file.language = 'en' XOR file.language = 'de'"];
这将只返回英文文件。
最佳答案
根据 http://developer.apple.com/library/ios/#documentation/Cocoa/Conceptual/Predicates/Articles/pSyntax.html#//apple_ref/doc/uid/TP40001795-SW1好像没有这样的运营商。如果需要,您必须使用括号并将 XOR b 转换为 (a AND NOT b) OR (NOT a and b)。无论如何,请注意 Henning 对此的评论无论如何都无济于事。您的陈述中的一个问题是它不平衡,即您希望英文版本具有优先权。最简单的方法可能是
- 按
file.language = 'en'
过滤数组 - 如果该数组为空:
- 按
file.language = 'de'
过滤数组
- 按
这样可以保证英文文件的优先级。
关于objective-c - 核心数据谓词中的异或?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8313516/