objective-c - 核心数据谓词中的异或?

标签 objective-c ios core-data nspredicate

有什么方法可以使用 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/

相关文章:

objective-c - 字节数组加倍

iphone - 如何在 Objective-C 中创建弱引用?

ios - 为什么不断开工作?

iOS Coredata无法打开sqlite数据库文件

ios - 核心数据关系错误

iphone - 如何使用 UIButtonBarItem 触发方法?

ios - 从 iOS 照片库 uri 获取 base64 照片

ios - ABAddressBookRef 在 iOS 中泄漏

ios - apple 是否接受没有新用户注册的 iOS 应用程序?

Cocoa CoreData 和非基于文档的应用程序