在 NSPredicate 中结合两个条件
Posted
技术标签:
【中文标题】在 NSPredicate 中结合两个条件【英文标题】:Combining Two Conditions in NSPredicate 【发布时间】:2015-10-24 17:17:02 【问题描述】:你如何结合NSPredicate
中的两个条件?我正在使用以下语句,我想添加另一个条件,使用 AND 将密码与文本字段的内容进行比较:
request.predicate = NSPredicate(format: "username = %@", txtUserName.text!)
【问题讨论】:
【参考方案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!)
【讨论】:
以上是关于在 NSPredicate 中结合两个条件的主要内容,如果未能解决你的问题,请参考以下文章
一对多关系 iPhone - NSPredicate 核心数据查询
NSPredicate 和 BEGINSWITH with CloudKit:字段值类型不匹配