我正在构建一个费用管理器,我有一个带有过滤器的搜索函数。对于所选的每个筛选器,我将各自的谓词附加到fetchedResultsController.的谓词数组中。在我的过滤器中,我有“预算”和“费用”两个选项。下面的代码显示了我如何附加谓词。
if filterCell[0][0] {
predicatesArray.append(NSPredicate(format: "type == %@", "budget" as NSString))
}
if filterCell[0][1] {
predicatesArray.append(NSPredicate(format: "type == %@", "expense" as NSString))
}回到主表视图,我得到了以下代码:
fetchRequest.predicate = NSCompoundPredicate(andPredicateWithSubpredicates: predicatesArray)当只选择一个预算或支出时,这是很好的,当它们都被选中时,表视图是空的(很明显,类型的不能同时是“”和“ so ”),所以我切换到了orPredicateWithSubpredicates。现在,如果我在筛选器中选择“”并按OK键,我仍然会得到费用条目,反之亦然,因为这个视图控制器包含一个默认谓词(例如,当用户选择一个日期周期(比如13.11 - 16.11 )),并且使用orPredicateWithSubpredicates不做任何事情,因为我的日期谓词总是正确的,唯一的选项是andPredicateWithSubpredicates。
我应该在代码中修改什么,这样它才能正常工作?
发布于 2017-11-16 17:55:45
我解决了。问题是,当设置没有应用them.The的谓词时,正确的方式是andPredicateWithSubpredicates,而我应用谓词的方式是使用以下代码:
if filterCell[0][0] && filterCell[0][1] {
predicatesArray.append(NSPredicate(format: "(type == %@) OR (type == %@)", "budget" as NSString, "expense" as NSString))
} else if filterCell[0][0] {
predicatesArray.append(NSPredicate(format: "type == %@", "budget" as NSString))
} else if filterCell[0][1] {
predicatesArray.append(NSPredicate(format: "type == %@", "expense" as NSString))
}https://stackoverflow.com/questions/47336074
复制相似问题