【发布时间】:2011-09-29 16:47:47
【问题描述】:
我有A、B、C三个班。A是主班。
当用户想要查看已购买的所有对象的列表时,从 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 是代表实体的核心数据类。
理论上,object 会保留分配给它的任何东西,所以我之前输入的 self.object = anObject 行将保留 self.object 上的 anObject 引用,对吧?
问题是,当我在购买新对象后尝试访问同一个类中的 self.object 时,收到错误“CoreData could not fulfill a fault for XXX”,其中 XXX 正是 self.object。
在代码中没有从数据库中删除任何对象。我能识别的对数据库的唯一操作是崩溃前另一个班级完成的保存操作。保存是由类似的东西完成的
if (![self.managedObjectContext save:&error]) ...
有什么关系吗?可能是什么原因造成的?
【问题讨论】: