iOS核心数据一对多关系

标签 ios core-data magicalrecord

好吧,我了解获取请求,以及我可以做到的相互访问一对一的关系。我在理解一对多时遇到了一些困难。

我的示例:一个郊区有许多街道,这些街道属于一个郊区。这将创建 NSSet 属性。如何将街道及其属性(即@“名称”)添加到特定郊区。我有一个列出郊区的 TableView,当您单击某个郊区时,它应该显示与该特定郊区相关的街道。

我知道这里还有其他核心数据问题,但阅读它们时,由于某种原因,我的脑海中并没有“点击”它们。

我正在使用 MagicalRecord,但根据我的理解,它所做的只是最大限度地减少我必须编写的代码,因此我需要了解如何在 Core Data 中执行此操作,然后才能在 MR 上尝试。

最佳答案

1:创建郊区实体的实例:

    AppDelegate* appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
    NSManagedObjectContext* context = [appDelegate managedObjectContext];
    Suburb *mySuburb = [NSEntityDescription insertNewObjectForEntityForName:@"Suburb" inManagedObjectContext:context];

2:初始化郊区街道集合

mySuburb.streets = [[NSMutableSet alloc]init];

3:创建街道:

    Street *myStreet = [NSEntityDescription insertNewObjectForEntityForName:@"Street" inManagedObjectContext:context];

4:“链接”两者

myStreet.suburb = mySuburb;
[mySuburb addStreetObject:myStreet];

编辑:以上假设您创建了正确的关系。理想情况下,街道关系属性将是级联类型关系,而郊区关系属性将无效。 如果是这种情况,当您删除一条街道时,它将从属于郊区的街道集中消失。如果删除一个郊区,它会删除所有街道。

哦,别忘了保存上下文。

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

相关文章:

ios - 从 coredata 返回 parent 和 child 不工作

ios - UIPageViewController 中是否可以有多个 UIView

ios - ionic 1 - Cordova - 谷歌地图 : Disappeared buttons on map - only IOS

swift - 在带有标签的核心数据之间左右滑动

objective-c - 核心数据 : model is nil while modelURL is valid

ios - 从核心数据中的文档目录保存图像路径,仅检索部分图像。 swift

ios - 一个用于 UITableview 和 UISearchDisplayController 的 NSFetchedResultController

ios - NSFetchedResultsController 提供 TableView ,同时同一持久存储的后台更新导致死锁

ios - UINavigationController inside UITabBarController inside UISplitViewController(仍然)以模态方式显示细节 Controller 而不是推送

ios - 调试器只显示字典的值和键的 "(no summary)"