gpt4 book ai didi

iphone - CoreData关系使用

转载 作者:行者123 更新时间:2023-12-03 20:52:35 25 4
gpt4 key购买 nike

我是 CoreData 的新手,并且对它有相对较好的掌握,但现在我开始考虑关系并需要一些帮助。

我的应用程序中的一个问题让我开始思考,我有两个实体,TableInfo 和 PersonInfo。

一张 table 可以坐很多人,但一个人只能坐一张 table 。所以我知道在这方面这将是一对多的关系,并且它在现实世界中也有意义。

无论如何,在我的应用程序中,我为我的人添加了一张 table ,所以我基本上说,这个人坐在这张 table 上。但是,如果我然后去删除我已经给某人的表,我该如何处理?

我认为人际关系可能会在这里发挥作用,但我以前从未与他们合作过,所以我很难理解该去哪里。

如果有人知道任何好的教程可以帮助解决这个问题或详细说明核心数据关系,或者您可以提供帮助,我将非常感激,谢谢,或者如果我为此树上错误的关系树,请告诉我问题。

谢谢!

最佳答案

这是使用核心数据关系的好情况。

通常的 Apple 文档 ( https://developer.apple.com/library/archive/documentation/Cocoa/Conceptual/CoreData/HowManagedObjectsarerelated.html ) 将让您很好地掌握它的工作原理。

简而言之,对于关系,您可以指定删除规则。就您而言,您可能会选择“无效”。这意味着,如果你删除了 table ,你的Person的table-property将变为null,表明你的人不再坐在 table 上。

编辑:您还可以指定“Cascade”,它将删除该人和表一起(相当无意义,但有点有趣的想法)。或者,您可以指定“拒绝”,如果 table 上仍然坐着至少一个人,这将中止删除。

示例:

假设您有两个实体:“TableInfo”和“PersonInfo”。 “PersonInfo”有一个名为“table”的关系,“TableInfo”有一个名为“persons”的关系。 “table”是以“TableInfo”为目标的一对一关系。 “persons”是以“PersonInfo”为目标的一对多关系。

现在将“persons”的“反向关系”设置为“table”。 “ table ”的“逆关系”将自动设置为“人”。

如果你让 CoreData 生成你的模型子类(你应该!),你最终会得到一个像这样的类:

@interface TableInfo : NSManagedObject

@property (nonatomic, retain) NSSet *persons;
@end

@interface TableInfo (CoreDataGeneratedAccessors)

- (void)addPersonsObject:(PersonInfo *)value;
- (void)removePersonsObject:(PersonInfo *)value;
- (void)addPersons:(NSSet *)values;
- (void)removePersons:(NSSet *)values;

如您所见,CoreData 会自动为您创建适当的访问器。只需使用它们即可。

您现在可以执行以下操作:

TableInfo* myTable = [NSEntityDescription insertNewObjectForEntityForName:@"TableInfo" inManagedObjectContext:self.managedObjectContext];

PersonInfo* myPerson = [NSEntityDescription insertNewObjectForEntityForName:@"PersonInfo" inManagedObjectContext:self.managedObjectContext];

[myTable addPersonsObject:myPerson];
NSLog(@"%@", myPerson.table); // will be your TableInfo object "myTable"

简而言之,请阅读我上面链接的文档,那里和互联网上都有很多示例。请随意提出有关 SO 的问题,但对于“基本”需求,互联网上的教程会更完整且更有帮助。

关于iphone - CoreData关系使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9863385/

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