The best way to establish the proper relationships for the object graph that your describing is to create an "Event" entity, and add a relationship (for consistency and clarity sake) call it "artists" which will have a "to-many" connection (which you'll set in the data model inspector in Xcode);
Then, create an entity called "Artist", and similarly create a relationship called "events" with a "to-many" relationship.
Now, in the model editor in Xcode, select the "Event" entity and set the connection of its "artists" relationship, under "Destination" to point to the entity "Artist".
Do the same for the "Artist" entity and set its "events" relationship to point to "Events". Make sure to set set the inverses as well (i.e. inverse for "artists" set to "events", inverse for "events" set to "artists").
Now, "events" is a set which contains "Artist" entities, and "artists" is a set which contains "Event" entities. However these sets are NOT mutable.
To add an "Artist" entity to the "artists" set, you first create a mutable proxy set like this
NSManagedObject *someEvent = [NSEntityDescription insertNewObjectForEntityForName:@"Event" inManagedObjectContext:context];
NSManagedObject *newArtist = [NSEntityDescription insertNewObjectForEntityForName:@"Artist" inManagedObjectContext:context];
NSMutableSet *artistMutableSet = [Event mutableSetValueForKey:@"artists"];
[artistsMutableSet addObject:newArtist];
To add an "Event" entity to the "events" set, you do the opposite.