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_Members
和 involvedin_Events
并将删除规则设置为 无效化
希望我表达清楚了:)快乐的编码伙伴:)
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_Members
和 involvedin_Events
并将删除规则设置为 无效化
希望我表达清楚了:)快乐的编码伙伴:)