Question

I have a CoreData (SQLite) datamodel in xcode like so:

Friends Table
  email
  name
  username
  belongsToGroups

Groups Table
  title
  peopleInGroup

So the belongsToGroups and peopleInGroups is a many-to-many relationship with each other, both represented by NSSet in the code.

What do I use to query the NSSet for people in my groups and vice versa? (I'm new to CoreData)

Was it helpful?

Solution

With coredata, you can do it simple. Assume we have one object on Groups Table ( group), you want to get all friends belong to group, you can do:

[group. peopleInGroup allObjects]

For more detail:

  1. Get group via title
NSError* error = nil;
NSFetchRequest* fetchRequest = [[NSFetchRequest alloc] init];
NSPredicate *predicate;
NSEntityDescription *entity;
NSArray *fetchedObjects;    
Group* group;    
entity = [NSEntityDescription
          entityForName:[NSString stringWithFormat:@"%@",[Group class]]
          inManagedObjectContext:self.managedObjectContext];
[fetchRequest setEntity:entity];
predicate = [NSPredicate predicateWithFormat:[NSString stringWithFormat:@"(title like[c] \"%@\")" ,title]];
[fetchRequest setPredicate:predicate];
fetchedObjects = [self.managedObjectContext executeFetchRequest:fetchRequest error:&error];
if (fetchedObjects.count > 0) {
    group = [fetchedObjects lastObject];
}
return group;

}

  1. Get all friend of group

    NSMutableArray* friends = [NSMutableArray alloc] init]; [friends addObjectsFromArray:[group. peopleInGroup allObjects]];

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top