- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我已经开始使用 NSCompoundPredicate
来组合我的谓词,但是有一个问题。
这是一个谓词的例子:
Aircraft *obj = (Aircraft *)[self.managedObjectContext objectWithID:objID];
if ([predicateAircraft.predicateFormat isEqualToString:@""] || !predicateAircraft)
predicateAircraft = [NSPredicate predicateWithFormat:@"aircraft = %@", obj];
else
{
NSPredicate *newPredicate = [NSPredicate predicateWithFormat:@"aircraft = %@", obj];
NSPredicate *compoundPredicate = [NSCompoundPredicate orPredicateWithSubpredicates:[NSArray arrayWithObjects:predicateAircraft, newPredicate, nil]];
predicateAircraft = compoundPredicate;
}
Aircraft
是 NSManagedObject
的子类。这个谓词效果很好,我只是循环遍历一些 Aircraft
对象,然后将每个对象添加到谓词中,所以如果 aircraft1 OR aircraft2 OR 等等......
我为多个属性执行此操作,代码与上面相同,但为不同的关系等创建谓词。基本上,这样用户就可以过滤他们看到的数据,例如哪架飞机。
无论如何,一旦我为其中的每一个构建了一个谓词,我就会像这样组合它们:
NSPredicate *predicateFinal = [NSCompoundPredicate andPredicateWithSubpredicates:[NSArray arrayWithObjects:predicateAircraft, predicateBatteries, predicatePilot, nil]];
这一次,使用AND
将它们结合起来。但是,使用此谓词根本不会过滤我的数据。它们单独工作,但在最后一行中没有一次组合在一起。任何想法为什么?这就是我需要解决的问题。
我有一种预感,它是否正在创建这个:aircraft1 OR aircraft2 OR ... AND ... pilot1 OR pilot2 OR...
通常您需要在每一位周围加上括号,例如在飞机和飞行员周围将它们分开,但化合物不会这样做吗?
实际上我得到的是:
aircraft = aircraftObj1 OR aircraft = aircraftObj2 AND pilot = pilotObj1 OR pilot = pilotObj2
我需要的(我认为的):
(aircraft = aircraftObj1 OR aircraft = aircraftObj2) AND (pilot = pilotObj1 OR pilot = pilotObj2)
无论如何,有什么想法吗?谢谢。
编辑:
predicateFinal
记录为:TRUEPREDICATE
。关于它的内容不多,但显然是 TRUEPREDICATE:一个始终计算为 TRUE 并且是谓词 bool 值的谓词。天知道为什么要返回?!想必返回 true 是 fetch 结果没有视觉变化的原因吧?因为返回时没有变化,所有对象都被提取。
编辑 2:
现在真正的进步。我已经解决了 battery
对象作为 NSSet 对多关系的一部分但执行 ANY battery
的任何问题。但它揭示了下一个问题(可能是一直以来的问题)。
最佳答案
事实证明,NSCompoundPredicate
返回了 TRUEPREDICATE
,因为我的复合中的第一个子谓词是 nil。 (简单嗯?Doh!)因此,如果第一个子谓词为 nil,则其他子谓词是否为 nil 并不重要,它会停在那里并返回 TRUEPREDICATE
并且不会过滤您的提取。
关于ios - NSCompoundPredicate 混合 AND 和 OR,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22135421/
我正在使用以下代码为 iPhone 应用程序构建 NSPredicate。日志记录显示prediate为:位置包含“头”并且形状包含“椭圆形”并且纹理包含“凹凸不平”并且颜色包含“红色” 我没有得到任
我必须承认我对谓词还很陌生。我有一个用户填写的表单,并根据此信息,它应该搜索保存的数据并返回相关结果。其代码是: let numberOfPlayers = numberOfPlayersPicked
我正在构建一个费用管理器,并且我有一个带有过滤器的搜索 功能。对于每个选定的过滤器,我将相应的谓词附加到 fetchedResultsController 的谓词数组中。在我的过滤器中,我有“预算”和
我想让我的代码更可用于核心数据,我有一个 fetchRequest,它带有我必须始终使用的谓词。但是,某些方法需要更多条件。我想将这些条件添加到谓词列表中,但我不确定如何执行此操作。我想要一种方法来返
我正在尝试使用 UISearchDisplayController 和 NSCompoundPredicate 过滤 UITableView 的 数据。我有一个包含 3 个 UILabels 的自定义
我已经开始使用 NSCompoundPredicate 来组合我的谓词,但是有一个问题。 这是一个谓词的例子: Aircraft *obj = (Aircraft *)[self.managedObj
在下面的代码中,我使用 NSPredicates,特别是我使用 NSCompoundPredicate 来检查搜索函数中的多个不同参数。我将如何同时使用名字和姓氏进行搜索,我目前正在使用 AND,但它
使用带有“Condition1 AND condition2”这样的值的单个 NSPredicate 与使用带有两个子谓词的 NSCompoundPredicate 的优缺点是什么? 即使我动态构建它
我正在尝试使用 Cloudkit 对复合谓词执行此操作,但 Xcode 错误显示“意外的表达式”。有人知道我的代码有什么问题吗?感谢任何帮助! let userRef = CKReference(re
我需要用很多数据构建一个NSPredicate。例如,在 SQL 中,我会执行如下操作: SELECT * FROM TRANSACTIONS WHERE CATEGORY IN (categ
请帮助我,我想在 Swift 2.2 NSPredicate 数组中为 NSCompoundPredicate 创建一个 coredata get 函数 public func loadData(en
列表项 因此,我尝试在 Swift 中设置具有多个条件的请求。 SQL 等同于: select BOARDID from BOARD where BOARDID not like "someBoa
我想在 swift 3 中创建一个复杂的 NSCompoundPredicate,但是,我不知道该怎么做。 假设我有 5 个谓词 (p1,p2,p3,p4,p5)。我想实现以下条件: compound
我有一个带有基本谓词“pred”和一个可选谓词“fieldQuery”的 CoreData 查询 NSArray *predArray = (fieldQuery != nil) ? @[pred,
不确定主题行是否有意义,我有一个运行良好的 NSCompoundPredicate,它在 24 小时内查询日期,如果记录被“阻止”,并且也只返回我的自定义记录“类型”。 我所说的自定义类型是指值可以是
回到 Xcode 6,在一个使用 Core Data 的项目中,我有以下行。它运行良好。 fetchRequest.predicate = NSCompoundPredicate(type: .And
这是导致错误的代码。 let p1 = NSPredicate(format: "status == %@", false ) let p2 = NSPredicate(format: "publis
我是一名优秀的程序员,十分优秀!