为了使我的代码对核心数据更可重用,我有一个带有谓词的fetchRequest,我总是必须使用这些谓词。然而,有些方法需要更多的条件。我想将这些条件添加到谓词列表中,但是我不确定如何做到这一点。我想要一个方法来返回一个带有基本查询的谓词,然后添加到这些查询中。
let fetchRequest = NSFetchRequest(entityName: "Stop")
var currentTime = NSDate.getTime()
var sort = NSSortDescriptor(key: "time", ascending: true) // sort by bus stop
fetchRequest.sortDescriptors = [sort]
let predicate = NSPredicate(format: "time >= %ld", currentTime)
let predicate2 = NSPredicate(format: "stop_name == %@", stop)
let predicate3 = NSPredicate(format: "busParent.direction == %@", direction)
let predicate4 = NSPredicate(format: "busParent.name == %@", name)
let predicate5 = NSPredicate(format: "busParent.schedule == %ld", schedule)
fetchRequest.predicate = NSCompoundPredicate.andPredicateWithSubpredicates(
[predicate, predicate2, predicate3, predicate4, predicate5])
// EXAMPLE: HOW WOULD I ADD TO THE COMPOUND PREDICATE ALREADY MADE?
fetchRequest.predicate.????发布于 2015-05-10 18:01:02
您可以将NSCompoundPredicates与其他NSPredicates复合
let currentPredicate = fetchRequest.predicate!
let additionalPredicate = NSPredicate(format: "whatever",...)
let nextPredicate = NSCompoundPredicate(type: NSCompoundPredicateType.AndPredicateType, subpredicates: [currentPredicate, additionalPredicate])
fetchRequest.predicate = nextPredicate通过指定.AndPredicateType,您将将现有的结果“缩小”到那些也满足附加谓词的结果。但是您也可以指定OrPredicateType或NotPredicateType来添加或排除现有的结果。
https://stackoverflow.com/questions/30154442
复制相似问题