我正在核心数据中实现验证功能,如下所示:
- (BOOL)validateMovementId:(id)value error:(NSError **)error {
NSString * idValue = (NSString *) value;
Movement * m = [Movement loadMovement:idValue context:self.managedObjectContext];
if(m != nil)
return NO;
return YES; }
我在底层核心数据模型类上使用了一个类别,这样我就可以使用 XCode 自动重写这些类,而不会丢失我的添加。这适用于除上述方法之外的所有方法,当我保存托管上下文时,它会在方法本身上给我一个 EXC_BAD_ACCESS。
事情是这样的:将此函数移出类别并移入基类可以解决问题。我猜这是因为当 Core Data 去保存上下文时,它不是使用我的类别而是使用基类,因此指针无效。有没有办法使用类别来实现验证,或者是否有必要对自动生成的对象进行子类化才能做到这一点,并且仍然保留使用 XCode 自动重写它们的能力?