不确定主题行是否有意义,我有一个NSCompoundPredicate
效果很好,它在24小时内查询日期,如果记录是"阻止",还有只返回我的自定义"类型"。
我的意思是自定义类型的值可以是1,2或3.所以我希望我的查询返回类型2和3的那些,这是有效的。但是,对于有3的奇特部分,在"用户名"下面也会有一个字符串值。云套件数据库中的值。在类型2下,用户名将为空白。
所以我想要返回所有类型3的用户名为" Smith"然后所有类型2都没有用户名。我无法同时使用用户名为smith的2型和3型,我拥有它的方式只返回名为smith的用户并且不会返回任何类型2&# 39; S。需要一种方法让UserName谓词是可选的吗?
代码:
let predName = NSPredicate(format: "UserName CONTAINS %@", "Smith")
let customTypes = [2, 3]
let time = 86400
let fromDateDay: Double = (NSDate().timeIntervalSinceReferenceDate - time)
let predDate = NSPredicate(format: "date >= %f", fromDateDay)
let predBlocked = NSPredicate(format: "blocked != %d", 1)
pred = NSCompoundPredicate(andPredicateWithSubpredicates: [customTypes, predDate, predBlocked, predName])
答案 0 :(得分:1)
首先,customTypes
不是谓词,因此您发布的代码应该崩溃。您需要构建一个谓词,该谓词考虑了自定义类型2和3之间的差异。
NSPredicate(format:
"(customType = 2 && userName contains %@) || (customType = 3)", "Smith")