I'm trying to query records from CloudKit that either have a newer modificationDate
than what I have locally, or perhaps that I don't have at all.
The records I have already are stored in recordNames
. The the date is date
.
I can do this with two predicates like this:
//Modification Date
let predicateDate = NSPredicate(format: "modificationDate > %@", date)
//Records I have already
let predicateRecordName = NSPredicate(format: "NOT (recordName IN %@)",recordNames)
//Combined 'OR'
let predicate = NSCompoundPredicate(orPredicateWithSubpredicates: [predicateDate, predicateRecordName])
But when I try to combine this as a compound OR
predicate, or combine them into a single predicate, I get an error:
Invalid predicate... CKErrorDomain Code=12... is not a comparison predicate, ck_isComparisonError=true
I see in the docs that doing an OR
predicate is not allowed. I'd love to not have to make two separate queries here. Any ideas on how I can pull this off?
'OR' option not working with predicates (I don't know if this is a bug of CloudKit). You have to make multiple queries.