如何使用CoreData获取相关实体的对象?
Posted
技术标签:
【中文标题】如何使用CoreData获取相关实体的对象?【英文标题】:How to get address the object of an related entity with CoreData? 【发布时间】:2010-05-20 08:24:09 【问题描述】:好的,在我为 CoreData 修改现有 Apple 示例时遇到了死胡同,我开始全新创建自己的项目并且效果很好,......直到我尝试访问相关实体。
这就是我所做的。
我创建了 2 个实体,其中一个只是另一个的详细信息,所以是一对二的关系。
实体#1,股票:
姓名 价值 详细信息 --> 与实体 #2 的关系实体 #2,库存详情:
银行 已发布 库存 --> 与实体 #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。
所以知道我在这里做错了什么吗?
谢谢
【问题讨论】:
【参考方案1】:没有错
StockDetails *details_ = [stockinfo details];
你应该看看你是否不小心在某处发布了详细信息或股票信息。由于您在 UITableViewController 中有此对象,因此该对象可用于每一行/部分。
【讨论】:
好吧,愚蠢的我。实际上,我确实在 cellForRowAtIndexPath 方法中发布了详细信息。感谢您指出这一点,我一直在看电话。【参考方案2】:对于一对一的关系,这应该有效:
StockDetails *details = [stockinfo valueForKey:@"details"];
【讨论】:
以上是关于如何使用CoreData获取相关实体的对象?的主要内容,如果未能解决你的问题,请参考以下文章