Ios 如何在每个孩子身上施展不同的超级变量';s

Ios 如何在每个孩子身上施展不同的超级变量';s,ios,nsmanagedobject,superclass,Ios,Nsmanagedobject,Superclass,当前状态 我有一个名为“GeneralCard”的超类,它是许多“CardsController”中的超级类 从“GeneralCard”继承的每个类都有一个不同的UIViewController子类,该子类包含不同的NSManagedObjects子类- (白卡控制器-->白卡, 红色卡片控制器-->红色卡片…。 对于所有ManagedObject,我有许多实际上相同的函数。所以我想把它们放在普通卡片上 问题 我创建了一个“通用”NSManagedObject,名为: NSManagedOb

当前状态
我有一个名为“GeneralCard”的超类,它是许多“CardsController”中的超级类

从“GeneralCard”继承的每个类都有一个不同的UIViewController子类,该子类包含不同的NSManagedObjects子类-

(白卡控制器-->白卡, 红色卡片控制器-->红色卡片…。

对于所有ManagedObject,我有许多实际上相同的函数。所以我想把它们放在普通卡片上

问题

我创建了一个“通用”NSManagedObject,名为:

 NSManagedObject *currentCard.
现在,在我尝试投射的每个视图控制器上:

self.currentCard = (WhiteCard*)self.currentCard;
因此,我将能够使用“白卡”属性

当我不断地犯错误时,这些都起作用了,比如-

…卡片视图 控制器/WhiteCardViewController.m:226: 错误:请求中的成员“信函” 不是结构或联盟的东西

因为字母在NSManagedObject中没有结构化,但在他的WhiteCard子类中有

回答问题 *如何从super共享相同的变量,但在每个vew控制器上强制转换不同的变量*

非常感谢


shani

我将为返回typecast对象的每个子类编写一个访问器方法。比如:

- (WhiteCard *)myTypeCurrentCard {
    return (WhiteCard *)self.currentCard;
}
- (GenericCard *)myTypeCurrentCard {
    return (GenericCard *)self.currentCard;
}
父类将具有如下内容:

- (WhiteCard *)myTypeCurrentCard {
    return (WhiteCard *)self.currentCard;
}
- (GenericCard *)myTypeCurrentCard {
    return (GenericCard *)self.currentCard;
}

在使用这些方法的每个控制器类中,消息
[self myTypeCurrentCard]
将返回一个转换为当前类型的对象。此方法不能保证生成的对象实际上就是该类型的对象,因此必须小心发送非
白卡
对象的白卡特定消息,以确保不会发生运行时错误。

谢谢,我已经凭直觉这样做了。现在我知道它的名字了,而且它是正确的。谢谢