好吧,在我遇到了一个为CoreData修改现有Apple示例的死路之后,我开始全新创建自己的项目,并且工作正常,.....直到我尝试访问相关实体。
所以这就是我所做的。
我创建了2个实体,其中一个只是另一个实体的详细信息,因此存在一对一的关系。
实体#1,股票:
实体#2,StockDetails:
现在,我为两个实体创建了“托管对象类”。
然后我创建了几行来将一些数据放入其中
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。
所以任何想法我在这里做错了什么?
由于
答案 0 :(得分:1)
没有错
StockDetails *details_ = [stockinfo details];
如果您没有意外地在某处发布详细信息或stockinfo,请查看。由于你在UITableViewController中有这个,所以该对象可以用于每一行/每个部分。
答案 1 :(得分:0)
对于一对一的关系,这应该有效:
StockDetails *details = [stockinfo valueForKey:@"details"];