Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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

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". relationship

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?

like image 214
WHT Avatar asked Feb 20 '23 15:02

WHT


1 Answers

Use ANY:

[NSPredicate predicateWithFormat:@"ANY tags == %@",currentTag];
like image 59
Mark Leonard Avatar answered May 16 '23 07:05

Mark Leonard