当前状态
我有一个名为“GeneralCard”的父类(super class),它是许多“CardsController”的父类(super class)。
每个继承自“GeneralCard”的类都有一个不同的 UIViewController 子类,它包含不同的 NSManagedObjects 子类 -
(WhiteCardsController -->WhiteCard, RedCardsController --> RedCard ...)。
我有很多对于所有托管对象来说实际上都是相同的函数。所以我想将它们分组到通用卡中。
问题
我创建了一个名为:
的“常规”NSManagedObject NSManagedObject *currentCard.
现在在我尝试转换的每个 View Controller 上:
self.currentCard = (WhiteCard*)self.currentCard;
所以我将能够使用“WhiteCard”属性。
这不起作用,因为我不断收到这样的错误 -
...Cards View Controllers/WhiteCardViewController.m:226: error: request for member 'letter' in something not a structure or union
因为字母不是在 NSManagedObject 中构造的,但它在他的 WhiteCard 子类中是构造的。
针对问题 *我如何从 super 共享相同的变量,但在每个 vew Controller 上以不同的方式转换它?*
非常感谢
沙尼
最佳答案
我将为每个返回类型转换对象的子类编写一个访问器方法。像这样的东西:
- (WhiteCard *)myTypeCurrentCard {
return (WhiteCard *)self.currentCard;
}
父类会有这样的内容:
- (GenericCard *)myTypeCurrentCard {
return (GenericCard *)self.currentCard;
}
在具有这些方法的每个 Controller 类中,消息[self myTypeCurrentCard]
将返回一个转换为当前类型的对象。此方法不保证生成的对象实际上是该类型的对象,因此必须注意确保通过发送非 WhiteCard
对象白卡特定消息不会发生运行时错误。
关于ios - 如何在每个 child 的内部以不同的方式转换 super 变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6328760/