Динамический предикат or
для моего запроса coredata get
var predicate = [NSPredicate]()
//this three is or
predicate.append(NSPredicate(format: "item_parent_id = %i", 1))
predicate.append(NSPredicate(format: "item_parent_id = %i", 3))
predicate.append(NSPredicate(format: "item_parent_id = %i", 5))
// but this one is and
predicate.append(NSPredicate(format: "price_date CONTAINS[cd] %@", 'timestamp'))
var compound = NSCompoundPredicate.orPredicateWithSubpredicates(predicate)
первое три ограничения для оператора OR, а последнее ограничение для даты - AND
Я потратил довольно много времени на это, я новичок в быстрой разработке, и я не привык к Objective C, поэтому мне сложно перевести то, что я нашел, написанное в объективном c.
если возможно, напишите ответ быстро, любые комментарии и предложения будут большой помощью. Заранее спасибо
Если вы ищете операцию типа (a OR b OR c) AND d
, вам понадобятся два составных предиката:
var orList = [NSPredicate]()
//this three is or
orList.append(NSPredicate(format: "item_parent_id = %i", 1))
orList.append(NSPredicate(format: "item_parent_id = %i", 3))
orList.append(NSPredicate(format: "item_parent_id = %i", 5))
let orPredicate = NSCompoundPredicate.orPredicateWithSubpredicates(orList)
// but this one is and
let other = NSPredicate(format: "price_date CONTAINS[cd] %@", 'timestamp')
let compound = NSCompoundPredicate.andPredicateWithSubpredicates([orPredicate, other])
NSPredicate(format: "item_parent_id IN %@", [1, 3, 5])
...