gpt4 book ai didi

cocoa - 将自定义方法添加到子类 NSManagedObject

转载 作者:行者123 更新时间:2023-12-03 16:02:48 25 4
gpt4 key购买 nike

我有一个核心数据模型,其中有一个实体 A,它是一个抽象。实体 B、C 和 D 继承自实体 A。实体 A 中定义了多个属性,供 B、C 和 D 使用。

我想在我的模型代码中利用这种继承。除了属性之外,我想知道是否可以向实体 A 添加方法,这些方法在其子实体中实现。

例如:

  1. 我向实体 A 的接口(interface)添加了一种方法,该方法返回一个值并采用一个参数
  2. 我将此方法的实现添加到 A、B、C、D
  3. 然后,我调用 executeFetchRequest: 来检索 B 的所有实例
  4. 我在检索到的对象上调用该方法,该方法应该调用 B 的实现中包含的方法的实现

我已经尝试过这个,但是在调用该方法时,我收到:

[NSManagedObject methodName:]: unrecognized selector sent to instance

我认为这是因为 executeFetchRequest: 返回的对象是某种代理对象。

有什么方法可以使用子类 NSManagedObjects 来利用继承吗?

我真的希望能够做到这一点,否则我的模型代码将负责确定它正在处理的 NSManagedObject 类型并根据类型执行特殊逻辑,这是不可取的。

感谢任何帮助,提前致谢。

最佳答案

它应该可以工作。 executeFetchRequest: 返回的对象是 NSManagedObject(或其子类)的真实实例。在CoreData中使用自定义类的步骤如下。假设您有实体 A 和 B,其中 B 继承自 A。然后你需要两个自定义类

@interface A:NSManagedObject{
}
-(void)someMethod:(NSString*)a;
@end;
@interface B:A{
}
-(void)someMethod:(NSString*)a;
@end;

然后在 XCode 数据建模器中设置它们,如下所示:

screenshot of XCode modeler

这样,当从数据库获取NSManagedObject时,CoreData会自动将正确的类分配给它。

关于cocoa - 将自定义方法添加到子类 NSManagedObject,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2150354/

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