2

我正在开发一个核心数据应用程序,其中我的实体有一个名为的公共属性deleted(我正在应用程序中实现逻辑删除)。

虽然所有实体都可以从一个通用实体继承,但我想避免它(我不喜欢在使用继承时所有实体最终都在同一个表中,但我离题了)。

为了保持代码整洁,我实现了一个这样的协议:

@protocol SPRLogicalDeleteEntity <NSObject>

@property (nonatomic, retain) NSNumber * deleted;

@end

我希望所有的NSManagedObject子类都符合这个协议,所以代码看起来更好。为了使代码可维护,我不想将协议添加到生成的NSManagedObject子类中,因此,我创建了一个类扩展:

@interface Product () < SPRLogicalDeleteEntity >

@end

我仅用于将实体标记为符合我的协议。

我遇到的问题是调用conformsToProtocol:@protocol(SPRLogicalDeleteEntity)return NO

我没有尝试过 mogenerator (但如果严格要求我可以)。任何提示?这可能是因为类扩展是空的,因此没有加载吗?

4

1 回答 1

0

我有一个类似的问题,我创建了一个类扩展:

@interface MyClass() <MyProtocol>

@end

并且实例正在MyClass返回NOconformsToProtocol:@protocol(MyProtocol)

我能够通过使用类别而不是扩展来解决问题:

MyClass+MyProtocol.h

@interface MyClass(MyProtocol) <MyProtocol>

@end

MyClass+MyProtocol.m

#import "MyClass+MyProtocol.h"

@implementation MyClass (MyProtocol)

@end

现在我的班级实例YES返回conformsToProtocol:@protocol(MyProtocol)

请注意,必须包含@implementation MyClass (MyProtocol). 最初,我试图只包含头文件,希望<MyProtocol>声明就足够了,但在我添加类别之前conformsToProtocol:仍然返回。NO@implementation

于 2020-06-10T00:13:59.893 回答