覆盖核心数据 属性 的方法:isDeleted

Approach to overriding a Core Data property: isDeleted

我想覆盖 NSManagedObject 中的 isDeleted 属性 因为它没有在我的应用程序中使用,而且过去不小心使用过它,微妙引入了错误。考虑到这个目标,我正在考虑做类似下面的事情,并简单地让我所有的 NSManagedObject 类型继承自这个父级。这是我想要做的事情的最佳方法吗?

@interface CustomManagedObject : NSManagedObject
@property (nonatomic, getter=isDeleted, readonly) BOOL deleted;
@end

@implementation CustomManagedObject

- (BOOL)isDeleted
{
    NSAssert(FALSE, @"Did you mean isDeleted, because that is not allowed...!");
}

// ....

@end

我认为以下内容更优雅:

@interface CustomManagedObject : NSManagedObject
@property (nonatomic, getter=isDeleted, readonly) BOOL deleted __attribute__((unavailable));
@end

@interface CustomManagedObject : NSManagedObject
@property (nonatomic, getter=isDeleted, readonly) BOOL deleted __attribute__((deprecated));
@end

试试看。