Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c CoreData-访问关系时出现问题_Objective C_Core Data_Ios6 - Fatal编程技术网

Objective c CoreData-访问关系时出现问题

Objective c CoreData-访问关系时出现问题,objective-c,core-data,ios6,Objective C,Core Data,Ios6,我的数据模型如下所示: NSArray *bArray = [objectA.relationA allObjects]; ObjectB *myB = bArray[0]; ObjectC *myC = myB.relationB; (I've also tried [myB valueForKey:@"relationB"] with the same result) 对象A>对象B对象C 我通过NSFetchedResultsController从核心数据中获取一组对象a。对于这个组中的

我的数据模型如下所示:

NSArray *bArray = [objectA.relationA allObjects];
ObjectB *myB = bArray[0];
ObjectC *myC = myB.relationB;
(I've also tried [myB valueForKey:@"relationB"] with the same result)
对象A>对象B对象C

我通过NSFetchedResultsController从核心数据中获取一组对象a。对于这个组中的一个特定对象,我知道它只有一个与之相关的对象B,我想检索对象C

我试着这样做:

NSArray *bArray = [objectA.relationA allObjects];
ObjectB *myB = bArray[0];
ObjectC *myC = myB.relationB;
(I've also tried [myB valueForKey:@"relationB"] with the same result)
问题是,我无法为对象C触发错误-我一直为myC触发错误:

$6=0x0a947c00(实体:ObjectC;id:0xa9680b0;数据:)

我将这个值传递给另一个视图控制器,当在那里访问它时,它仍然是一个错误,这不是非常有用

当我有了对象时,必须重新绘制似乎很愚蠢,但我不知道还能做什么。我在这篇文章中找到的所有线程都说错误是正常的,当您访问有故障的对象时,它们将被触发,但这里似乎没有发生这种情况

有什么建议吗

更新:我尝试添加以下内容:

[fetchRequest setRelationshipKeyPathsForPrefetching:@[@"relationA.relationB"]];
但这没有任何区别

问题是我不能为对象C-I触发错误 继续为myC获取此信息:

$6=0x0a947c00(实体:ObjectC;id:0xa9680b0;数据:)

您尚未尝试访问myC<代码>myC在您以某种方式使用它之前,它将一直是一个故障。发件人:

错误处理是透明的,您不必执行获取 认识到错误。如果在某个阶段故障的持续属性 对象,然后核心数据自动检索数据 并初始化对象(请参见NSManagedObject类 有关不会引发故障的方法列表的参考)。 此过程通常称为触发故障

因此,(假设
ObjectC
具有
name
属性),如果您执行以下操作:

NSString *name = myC.name;
您应该发现
myC
上的故障触发,您将自动拥有一个真正的对象来处理

我能找到的所有线索都说故障是正常的 当您访问出现故障的对象时,它们将被激发,但是 这里似乎没有发生什么


他们是对的。除非您没有告诉我们更多,否则听起来您只是希望在不同的时间触发故障,即,当您将对象指定给
myC
时。但同样,除非您对故障采取措施,例如获取或设置属性,否则故障不会触发

我试过了,大部分时间它似乎都能工作,但我在访问myC时还是遇到过一次错误:“CoreData:error:NULL\u cd\u rawData,但对象没有变成错误”总是需要学习一些新的东西…关于这个错误有一些信息。听起来您试图在一个与拥有该错误的上下文无关的线程中触发该错误。如果必须在不同的线程中使用该错误,请考虑仅通过<代码> Objult,然后使用上下文的<>代码-ObjutsId:< /C>方法获取目标线程上下文中的对象。或者也许我读得太多了。。。