【问题标题】:Combining Two Conditions in NSPredicate在 NSPredicate 中结合两个条件
【发布时间】:2015-10-24 17:17:02
【问题描述】:

你如何结合NSPredicate中的两个条件?我正在使用以下语句,我想添加另一个条件,使用 AND 将密码与文本字段的内容进行比较:

request.predicate = NSPredicate(format: "username = %@", txtUserName.text!)

【问题讨论】:

    标签: swift nspredicate


    【解决方案1】:

    如前所述,您可以使用“AND”、“OR”等逻辑运算符 在谓词中。详情可在 Predicate Format String Syntax 在“谓词编程指南”中。

    作为替代,使用“复合谓词”:

    let p1 = NSPredicate(format: "username = %@", "user")
    let p2 = NSPredicate(format: "password = %@", "password")
    let predicate = NSCompoundPredicate(andPredicateWithSubpredicates: [p1, p2])
    

    这对于更复杂的表达式很有用,或者如果您想构建 运行时动态的谓词。

    【讨论】:

    • 如果我需要 OR 条件怎么办?
    • @Jan: orPredicateWithSubpredicates ?
    • 如果两者都需要类似 NSPredicate(format: "(username = %@ AND password = %@)) OR (email = %@ AND password = %@) ", usernameAndEmail, txtPassword.text 怎么办? !,usernameAndEmail, txtPassword.text!)
    • @John:您可以使用“AND”和“OR”编写单个谓词,或者使用 andPredicateWithSubpredicates/orPredicateWithSubpredicates 组合简单的谓词——这两种方法都可以。
    【解决方案2】:

    试试这个

    request.predicate = NSPredicate(format: "username = %@ AND password = %@", txtUserName.text!, txtPassword.text!)
    

    【讨论】:

      【解决方案3】:

      AND 正是你所需要的

      request.predicate = NSPredicate(format: "username = %@ AND password = %@", txtUserName.text!, txtPassWord.text!)
      

      【讨论】:

        猜你喜欢
        • 2012-05-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-04-25
        • 1970-01-01
        • 2019-04-05
        相关资源
        最近更新 更多