首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >添加到NSCompoundPredicate中

添加到NSCompoundPredicate中
EN

Stack Overflow用户
提问于 2015-05-10 17:28:55
回答 1查看 865关注 0票数 2

为了使我的代码对核心数据更可重用,我有一个带有谓词的fetchRequest,我总是必须使用这些谓词。然而,有些方法需要更多的条件。我想将这些条件添加到谓词列表中,但是我不确定如何做到这一点。我想要一个方法来返回一个带有基本查询的谓词,然后添加到这些查询中。

代码语言:javascript
复制
 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.????
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-05-10 18:01:02

您可以将NSCompoundPredicates与其他NSPredicates复合

代码语言:javascript
复制
    let currentPredicate = fetchRequest.predicate!
    let additionalPredicate = NSPredicate(format: "whatever",...)
    let nextPredicate = NSCompoundPredicate(type: NSCompoundPredicateType.AndPredicateType, subpredicates: [currentPredicate, additionalPredicate])
    fetchRequest.predicate = nextPredicate

通过指定.AndPredicateType,您将将现有的结果“缩小”到那些也满足附加谓词的结果。但是您也可以指定OrPredicateTypeNotPredicateType来添加或排除现有的结果。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30154442

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档