iOS核心数据一对多关系

时间:2014-04-16 01:15:02

标签: ios core-data magicalrecord

好的,所以我理解了获取请求,并且可以访问彼此之间的一对一关系。我很难理解一对多。

我的例子:郊区有很多街道,这些街道属于一个郊区。这将创建NSSet属性。如何将街道及其属性(即@" name")添加到特定的郊区。我有一个列出郊区的TableView,当你点击一个郊区时,它应该显示与该特定郊区相关的街道。

我知道这里有其他核心数据对很多问题,但是阅读它们并不是"点击"由于某种原因,在我脑海里。

我正在使用MagicalRecord但是根据我的理解,所做的一切都是最小化我必须编写的代码,因此我需要了解如何在Core Data中执行此操作,然后才能在MR上尝试。

2 个答案:

答案 0 :(得分:2)

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];

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

哦,不要忘记保存背景。

答案 1 :(得分:0)

  1. 创建查询以检查郊区是否存在。如果不是,请创建新的郊区

  2. 从郊区获取NSSet Streets。

    如果NSSet * Suburb == nil - >创建街道,为此街道指定名称 - >创建新郊区并将街道分配到此郊区

    如果NSSet * Suburb!= nil - >将新街道插入郊区

  3. 希望这个想法可以帮助你。