gpt4 book ai didi

ios - Swift核心数据多对多关系

转载 作者:行者123 更新时间:2023-11-29 12:00:37 25 4
gpt4 key购买 nike

Swift Core Data 多对多关系,如何保存关系。

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

所以

事件<<-->>成员

关系

事件 - 事件 - 成员成员(member) - 成员(member) - 事件

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

最佳答案

你不需要任何代码来建立实体 Event 和 Member buddy 之间的关系:)

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

现在选择关系将其从事件到成员(多对多关系)和成员到事件(反向关系)更改为多对多:​​)

现在在 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"];

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

提示

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

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

关于ios - Swift核心数据多对多关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37193768/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com