gpt4 book ai didi

objective-c - 如何让所有 Core Data 对象从我的类而不是 NSManagedObject 继承?

转载 作者:行者123 更新时间:2023-12-04 06:47:21 24 4
gpt4 key购买 nike

我创建了自己的类,我希望 Core Data 使用它而不是 NSManagedObject :

@interface MyManagedObject: NSManagedObject {
id delegate;
}

我不能使用类别,因为它声明了一个 ivar。我所有的 Core Data 对象都使用具体的类而不是 NSManagedObject 的实例。 .我使用代码生成器来生成这些文件。这是一个 Contact 的例子对象可能如下所示:
@interface Contact: NSManagedObject {
}

我知道我可以手动更改 NSManagedObjectMyManagedObject在这个生成的代码中,但我每次重新生成代码时都需要这样做。有没有办法让它自动使用我自己的类?

此外, #import在任何解决方案中都可能是一个问题。理想情况下,我希望它使用 @class MyManagedObject而不是 #import "MyManagedObject.h" , 自 MyManagedObject.h位于库中,标题需要一个文件夹前缀才能访问(例如 #import "MyLib/MyManagedObject.h" )。

我尝试在 .xcdatamodel 中创建一个虚拟对象同名的文件并指定所有对象都继承自它,但有两个问题。首先是它正在使用 #import "MyManagedObject.h" ,由于我上面指定的原因,它无法找到。第二个问题是,我不确定让 Core Data 认为该类是从另一个 Core Data 对象继承的好主意……即使我没有生成代码文件。我猜测 Core Data 可能在幕后做了一些不必要的事情,因为它认为我的类继承了一个额外的类。

我想我可以使用另一层类来解决第一个问题。例如,我会指定对象继承自 MyProjectManagedObject并创建一个 MyProjectManagedObject.h我的项目中的文件:
#import "MyLib/MyManagedObject.h"

@interface MyProjectManagedObject: MyManagedObject {
}

...现在我自动生成的文件将如下所示:
#import "MyProjectManagedObject.h"

@interface Contact: MyProjectManagedObject {
}

......这会起作用。唯一的问题是我上面提到的关于在 Core Data 中运行在幕后的额外代码的第二个问题。这是需要担心的事情还是我应该忽略它?有没有其他方法可以解决上述两个问题?

最佳答案

看看 MOGenerator。它至少有助于重新生成托管对象类文件:它为每个文件生成两个文件。一种是您编辑的,一种是自动生成的。当您重生后者时,前者不会受到影响。

http://digitalflapjack.com/blog/2010/mar/26/mogeneratorftw/

关于objective-c - 如何让所有 Core Data 对象从我的类而不是 NSManagedObject 继承?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3562006/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com