【问题标题】:Core data with multiply relationships具有多重关系的核心数据
【发布时间】:2013-11-21 18:36:25
【问题描述】:

我正在尝试使用核心数据存储和检索数据。我可以使用双实体,但目前正在尝试访问一个深度为两层的(PRC)实体。

目前我的模型由一个 Fpga 实体、一个 Session 实体和一个 PRC 实体组成。 Fpga 实体与 Session 实体具有一对多的关系。 Session 实体与PRC 实体具有一对一的关系。 PRC 实体由 prc0 和 prc1 两个属性组成。

我目前正在从以下位置填充模型:

Fpga *newEntry = [NSEntityDescription insertNewObjectForEntityForName:@"Fpga" inManagedObjectContext:self.managedObjectContext];

newEntry.name = self.fpgaTextField.text;

Session *session0 = [NSEntityDescription insertNewObjectForEntityForName:@"Session" inManagedObjectContext:self.managedObjectContext];
session0.type = self.s0TextField.text;

//--------
session0.prc.prc0 = [NSNumber numberWithInt:99];
session0.prc.prc1 = [NSNumber numberWithInt:113];
//--------

Session *session1 = [NSEntityDescription insertNewObjectForEntityForName:@"Session" inManagedObjectContext:self.managedObjectContext];
session1.type = self.s1TextField.text;

//------
session1.prc.prc0 = [NSNumber numberWithInt:[ self.p0TextField.text intValue]];;
session1.prc.prc1 = [NSNumber numberWithInt:[ self.p1TextField.text intValue]];;
//------

newEntry.session = [NSSet setWithObjects:session0, session1, nil];

并尝试检索 PRC 数据,例如(数据库中只有一个对象用于演示):

    PRC *prc0 = (PRC*)[[[fpgaObj.session allObjects] objectAtIndex:0] prc];
    self.p0TextField.text = [NSString stringWithFormat:@"%@", prc0.prc0];

我总是返回 null 但所有其他 Fpga 和 Session 属性都很好。显然出了点问题……但不确定是什么……

提前致谢

【问题讨论】:

    标签: ios core-data relationship


    【解决方案1】:

    您不创建PRC 对象,因此session0.prcsession1.prcnil

    例如:

    PRC *prc = [NSEntityDescription insertNewObjectForEntityForName:@"PRC" inManagedObjectContext:self.managedObjectContext];
    prc.prc0 = [NSNumber numberWithInt:99];
    prc.prc1 = [NSNumber numberWithInt:113];
    session0.prc = prc;
    

    【讨论】:

    • 谢谢,现在很明显 :)
    【解决方案2】:

    在执行session0.prc.prc0 = ... 之前,您需要创建PRC 实体的实例。您通常会创建和配置此实例,然后将其设置为关系的内容 (session0.prc = ...)。目前您正尝试将数字设置为不存在的实例。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-30
      • 1970-01-01
      • 2011-03-30
      • 2016-06-30
      • 1970-01-01
      相关资源
      最近更新 更多