我创建了自己的类,我希望核心数据使用,而不是
NSManagedObject
:
@interface MyManagedObject: NSManagedObject {
id delegate;
}
我不能使用类别,因为这声明了一个IVAR。我所有的核心数据对象都使用具体的类,而不是
被管理对象
. 我使用代码生成器生成这些文件。下面是一个例子
Contact
对象可能看起来像:
@interface Contact: NSManagedObject {
}
我知道我可以手动更改
被管理对象
到
MyManagedObject
在这个生成的代码中,但每次重新生成代码时都需要这样做。有没有办法让它自动使用我自己的班级?
另外,
#import
任何解决方案都可能存在问题。理想情况下我想用它
@class MyManagedObject
而不是
#import "MyManagedObject.h"
,因为
MyManagedObject.h
位于库中,并且头需要文件夹前缀才能访问(例如
#import "MyLib/MyManagedObject.h"
)
我尝试在
.xcdatamodel
具有相同名称并指定所有对象都继承自该文件的文件,但有两个问题。第一个是它正在使用
#导入“myManagedObject.h”
因为我上面指定的原因找不到。第二个问题是,我不确定欺骗核心数据以为类是从另一个核心数据对象继承的是一个好主意…即使我没有生成代码文件。我猜想核心数据可能在幕后做了一些不必要的事情,因为它相信有一个额外的类是我的类所继承的。
我想我可以用另一层类来解决第一个问题。例如,我将指定对象继承自
MyProjectManagedObject
创建一个
MyProjectManagedObject.h
我的项目中的文件:
#import "MyLib/MyManagedObject.h"
@interface MyProjectManagedObject: MyManagedObject {
}
…现在,我的自动生成文件将如下所示:
#import "MyProjectManagedObject.h"
@interface Contact: MyProjectManagedObject {
}
…那就行了。唯一的问题是我上面提到的第二个关于在核心数据中后台运行额外代码的问题。这是值得担心的事情还是我应该忽略它?有没有其他方法可以解决上述两个问题?