I am working on a CloudKit backed app with a Users record type that has a "following" reference list attribute. I am trying to construct a query to get every user that is following a specified user (i.e. those users in which the specified user appears as an entry in the following reference list).
I am currently trying to construct my NSPredicate
for the CKQuery
as such:
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"%@ IN following", [[CKReference alloc] initWithRecordID:currentUserID action:CKReferenceActionNone]];
CKQuery *query = [[CKQuery alloc] initWithRecordType:UserRecordType predicate:predicate];
And CloudKit returns the following error message:
"Unknown Item" (11/2003); server message = "did not find required record type";
I feel I might be missing something pretty straight forward in my predicate. Any help would be greatly appreciated!
Use CONTAINS operator to test list membership:
CKReference* recordToMatch = [[CKReference alloc] initWithRecordID:currentUserID action:CKReferenceActionNone];
NSPredicate* predicate = [NSPredicate predicateWithFormat:@"following CONTAINS %@", recordToMatch];
If you want to query for more than 1 reference, then you need to use a compound predicate with AND predicate type for each reference in list.