如何使用CoreData获取相关实体的对象?

时间:2010-05-20 08:24:09

标签: objective-c core-data entity-relationship

好吧,在我遇到了一个为CoreData修改现有Apple示例的死路之后,我开始全新创建自己的项目,并且工作正常,.....直到我尝试访问相关实体。

所以这就是我所做的。

我创建了2个实体,其中一个只是另一个实体的详细信息,因此存在一对一的关系。

实体#1,股票:

  • 名称
  • 详细信息 - >与实体#2的关系

实体#2,StockDetails:

  • 银行
  • 公布
  • stock - >与实体#1的关系

现在,我为两个实体创建了“托管对象类”。

然后我创建了几行来将一些数据放入其中

NSManagedObjectContext *context = [self managedObjectContext];

Stocks *stockinfo= [NSEntityDescription
    insertNewObjectForEntityForName:@"Stocks" 
    inManagedObjectContext:context];
stockinfo.name = @"Apple";
stockinfo.value = [NSNumber numberWithInt:200];


StockDetails *thestockdetails = [NSEntityDescription
    insertNewObjectForEntityForName:@"StockDetails" 
    inManagedObjectContext:context];

thestockdetails.bank = @"Bank of America";
thestockdetails.published = [NSDate date];
thestockdetails.stock = stocks_;

stockinfo.details = thestockdetails ;

NSError *error;
if (![context save:&error])
{
    NSLog(@"A Problem occured, couldn't save: %@", [error localizedDescription]);
}

我想在这里提一下,我没有收到任何错误。

接下来,我将所有内容放入UITableViewController进行预览,将另一个放入详细视图。预览只显示实体#1(股票)的信息,选择后会显示详细视图。

现在我在这里也显示实体#1(股票)的信息,但我想显示实体#2(StockDetails)。

这是我尝试访问数据的方式:

StockDetails *details_ = [stockinfo details];

这给了我一个EXC_BAD_ACCESS。

所以任何想法我在这里做错了什么?

由于

2 个答案:

答案 0 :(得分:1)

没有错
StockDetails *details_ = [stockinfo details];

如果您没有意外地在某处发布详细信息或stockinfo,请查看。由于你在UITableViewController中有这个,所以该对象可以用于每一行/每个部分。

答案 1 :(得分:0)

对于一对一的关系,这应该有效:

StockDetails *details = [stockinfo valueForKey:@"details"];