ios - 符合类扩展的协议(protocol)

标签 ios objective-c core-data

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

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

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

@protocol SPRLogicalDeleteEntity <NSObject>

@property (nonatomic, retain) NSNumber * deleted;

@end

我想要所有的NSManagedObject子类以符合此协议(protocol),因此代码看起来更好。为了使代码可维护,我不想将协议(protocol)添加到生成的 NSManagedObject子类,所以相反,我创建了一个类扩展:
@interface Product () < SPRLogicalDeleteEntity >

@end

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

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

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

最佳答案

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

@interface MyClass() <MyProtocol>

@end

以及 MyClass 的实例正在返回 NO对于 conformsToProtocol:@protocol(MyProtocol)
我能够通过使用类别而不是扩展来解决问题:

MyClass+MyProtocol.h
@interface MyClass(MyProtocol) <MyProtocol>

@end

MyClass+MyProtocol.m
#import "MyClass+MyProtocol.h"

@implementation MyClass (MyProtocol)

@end

现在我的类(class)实例返回 YES对于 conformsToProtocol:@protocol(MyProtocol)
请注意,必须包含 @implementation MyClass (MyProtocol) .最初,我试图只包含头文件,期望 <MyProtocol>声明就足够了,但是 conformsToProtocol:仍在返回 NO直到我添加了 @implementation为类别。

关于ios - 符合类扩展的协议(protocol),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16717272/

相关文章:

ios - NSDateFormatter 没有正确返回

ios - 删除应用程序时删除缓存文件 ios

objective-c - 圆段的笔画动画以完整的笔画结束

ios - GC Matchmaking邀请人能收到 "declined"消息吗?

ios - 当应用程序重新启动时,核心数据中的数据不持久

iOS:NSPersistentStoreCoordinator addPersistentStoreWithType:configuration:URL:options:error 会导致什么错误:

iphone - 将 RSS 提要导入 Core Data 时防止重复

iphone - UITableView 自定义部分标题显示在单元格下方

ios - 在 Atlas.h 中找不到 ATLAddressBarViewController.h

ios - Objective-C - 类似于 CLLocationCoordinate2DMake 的自定义结构 'make' 方法