我正在编写一个与服务器同步的程序。同步在前台运行,但使用LRResty和委托来获取响应。随机地,当我运行同步时,我得到 EXC_BAD_ACCESS 信号运行此代码或在CoreData中添加一些其他插入/关系:
WorkoutExerciseSet *set = [NSEntityDescription insertNewObjectForEntityForName:@"WorkoutExerciseSet" inManagedObjectContext:mObjContext];
因此我认为错误是因为此代码实际上并未在主线程上运行。这可能是原因吗?哪种解决方法最好?
答案 0 :(得分:0)
在给定的代码行中唯一可能的EXC_BAD_ACCESS源是mObjContext
具有nil值。您在沿线的某处丢失了NSManagedObjectContext对象。
基于这一行代码,您可能没有正确使用评估者。托管对象上下文几乎总是包含插入代码的对象的属性,因此该行应该看起来像:
WorkoutExerciseSet *set = [NSEntityDescription insertNewObjectForEntityForName:@"WorkoutExerciseSet" inManagedObjectContext:self.mObjContext];
...确保正确访问上下文对象。同样,当您设置属性值时,它应该是:
self.mObjContext=someManagedObjectContext;