我有三个类,A,B和C. A是主类。iPhone核心数据 - 不能履行故障错误
当用户想要查看所购买的所有对象的列表时,将从A中调用B类,并显示核心数据实体中的对象列表。
在B类内部,用户可以购买新对象(应用内购买)。当用户想要购买另一个对象时,就会调用C类。
当C类被调用时,则使用
anObject = [NSEntityDescription insertNewObjectForEntityForName:@"Objects" inManagedObjectContext:context];
那么这个对象被分配给有关类别C的本地参考,使用类似
self.object = anObject;
核心数据实体创建一新的对象
这个对象变量是这样声明的:
.h
MyObjects *object;
@property (nonatomic, retain) MyObjects *object;
and @synthesized on .m
MyObjects是一个核心数据c lass代表实体。
从理论上讲,对象将保留任何分配给它的对象,所以行self.object = anObject我之前输入的将保留self.object上的对象引用,对吗?
问题是,当我尝试在购买新对象后访问同一类中的self.object时,收到错误“CoreData无法完成XXX的错误”,其中XXX正好是self.object。
代码中没有任何对象从数据库中删除。对于我能识别的数据库唯一的操作是在崩溃之前的另一个课程完成的保存操作。保存是通过类似
if (![self.managedObjectContext save:&error]) ...
是否有任何关系?可能是什么原因造成的?
好。现在我正在做你说的话。我在创建对象时保存objectID引用,然后使用objectWithID检索它,并且它仍然在同一行中崩溃,也就是说,在检索对象后我正好尝试设置其属性。 – SpaceDog
我们将需要查看当您存储id时的代码,然后再检索该对象。 –
问题是这样的:如果我打印控制台使用objectWithID检索它后得到的对象是这样的:**(entity:Objects; id:0x1b6ca0 ; data:)**,我认为是一个错误。现在的问题是我如何“无故”...... –
SpaceDog