How to check if an objects is inside of a NSSet of objects by using predicateWithFormat in CoreData?

core-data, nsset, predicatewithformat

Solution

Use ANY:

[NSPredicate predicateWithFormat:@"ANY tags == %@",currentTag];

Problem

In my iPhone app, I try to have a TableViewController to display a list of photos those share one same tag (currentTag in code below). Photo and tag are "many to many" relationship in database. Each photo has an attribute named "tags", which type is NSSet. Each tag has an attribute named "photos", which type is NSSet, too. Tag has an attribute called "name". I'm trying to do the following code: ``` NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"Photo"]; request.predicate = [NSPredicate predicateWithFormat:@"tags contains %@",currentTag]; ``` The problem is I can't do many things inside predicateWithFormat for the reason of quotation marks. And the key word "contains" not working here, they are for strings only. I also tried ``` [NSPredicate predicateWithFormat:@"%@ IN tags",currentTag] ``` no luck either... One more, I found someone has a similar question at here, then I try the following code, still nothing displays in the table view controller. However, if I comments the line, all photos shows up. ``` [NSPredicate predicateWithFormat:@"self in %@",[currentTag photos]] ``` Can someone give help please?

Original source

Related problems