Swift核心数据多对多关系

Swift core data many-to-many relationship

SwiftCore Data多对多关系,请问如何保存关系

假设有 2 个实体事件和成员,一个事件可以关联多个成员,一个成员可以关联多个事件...

所以

活动<<-->>会员

关系

活动 - 活动 - 成员 会员 - 会员 - 活动

您将如何编写代码来保存这种关系?

您不需要任何代码来建立实体事件和会员好友之间的关系:)

您可以打开核心数据模型,select事件实体,按住控件并将鼠标拖到成员实体上:) 关系将立即建立:)

现在 select 关系从事件到成员(多对多关系)和成员到事件(反向关系)变为多对多:​​)

现在适当地命名 Event 和 Member 实体中的那些关系:)

像事件中的多对多关系被命名为 involves_Members 并且成员实体中的相同关系将被命名为 involvedin_Events :)

现在,当您为两个实体生成模型 类 时,您会发现

Events.h

有一个名为 involves_Members 的 属性 类型 NSSet

类似地

`Members.h`

有一个名为 involvedin_Events 的 属性 类型也是 NSSet :)

现在假设如果您想将成员添加到活动中,您所要做的就是

创建成员对象为

    [context performBlock:^{

    Member *member = (Member *)[NSEntityDescription insertNewObjectForEntityForName:@"Member"  inManagedObjectContext:context];
    [member setValue:@"yourValue" forKey:@"yourkey"];
    //after populating it with appropriate value set the relationship with event :)
    //get the event to which you want to set the relationship with member using NSFetchRequest :)

    //assuming you have event object with you 
    NSMutableSet *involvedMembers = [event mutableSetValueForKey:@"involves_Members"];
    [involvedMembers addObject:member];

    [event setValue:involvedMembers forKey:@"involves_Members"];

    //thats it you are done now 
    //save the context now :)
    NSError *error;  
    [context save:&error];
}];

当你想访问所有涉及的成员和事件时,你所要做的就是使用 NSFecthRequest 获取事件对象 :) 一旦你有了事件对象,你就可以通过使用访问它的所有成员,

NSArray *membersArray = [event.involves_Members allObjects];

NSArray *membersArray = [event valueForKey:@"involves_Members"];

就是这样:)同样的事情也适用于成员实体:)

提示

您不希望删除操作弄乱您的核心数据 :) 所以 select 关系 involves_Membersinvolvedin_Events 并将删除规则设置为 无效化

希望我表达清楚了:)快乐的编码伙伴:)