繁体   English   中英

具有多重关系的核心数据

[英]Core data with multiply relationships

我正在尝试使用核心数据存储和检索数据。 我对双重实体的工作还可以,但是目前正在尝试访问深度为两个级别的(PRC)实体。

目前,我的模型由Fpga实体,Session实体和PRC实体组成。 Fpga实体与Session实体具有一对多关系。 会话实体与中国实体具有一对一关系。 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属性都可以。 显然出了点问题...但不确定是什么。

提前致谢

你不创建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;

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM