How do you manage and use “Many to many” core data relationships?

后端 未结 5 1185
爱一瞬间的悲伤
爱一瞬间的悲伤 2020-12-04 15:55

I\'m creating an app and trying to use core data, because it seems like it\'s the objective-C approved way to create a data storage system. The use case I have involves \"ma

5条回答
  •  陌清茗
    陌清茗 (楼主)
    2020-12-04 16:25

    Let's say you have two entities in your database, employees and managers. They would look something like this in the code:

    @interface Employee :  NSManagedObject  
    {
    
    }
    
    @property (nonatomic, retain) NSNumber * id;
    @property (nonatomic, retain) NSSet* managers;
    
    @interface Manager :  NSManagedObject  
    {
    
    }
    
    @property (nonatomic, retain) NSNumber * id;
    @property (nonatomic, retain) NSSet* employees;
    

    So let's say you wanted to retrieve all the employees for manager number 1, you would just have to get the manager object from the database:

    NSNumber *managerID = [NSNumber numberWithInt:1];
    NSEntityDescription * entityDescription = [NSEntityDescription entityForName:@"Manager"                                                       inManagedObjectContext:managedObjectContext]; 
    NSFetchRequest *request = [[[NSFetchRequest alloc] init] autorelease];  
    [request setEntity:entityDescription];  
    NSPredicate *predicate = [NSPredicate predicateWithFormat:@"%K == %d", @"id", managerID];   
    [request setPredicate:predicate];
    NSArray *array = [managedObjectContext executeFetchRequest:request error:&error];
    Manager *manager = [array objectAtIndex:0];
    

    and then you would have all its employees in the employees property:

    NSSet *allHisEmployees = manager.employees;
    

    It would be exactly the same to retrieve the managers for a given employee.

    I hope it clears things up

提交回复
热议问题