当前状态
我有一个名为“GeneralCard”的超类,它是许多“CardsControllers”的超级。
从“GeneralCard”继承的每个类都有一个不同的UIViewController子类,它包含不同的NSManagedObjects子类 -
(WhiteCardsController - > WhiteCard, RedCardsController - > RedCard ......)。
我有很多函数对于所有的managedObjects都是相同的。所以我想把它们归为普通卡片。
问题
我创建了一个名为的“General”NSManagedObject:
NSManagedObject *currentCard.
现在在我试图投射的每个View控制器上:
self.currentCard = (WhiteCard*)self.currentCard;
所以我将能够使用“WhiteCard”属性。
该剂量工作,因为我不断收到错误 -
...卡片查看 控制器/ WhiteCardViewController.m:226: 错误:请求成员'字母' 不是结构或联合的东西
由于字母不是在NSManagedObject中构造的,而是在他的WhiteCard子类中。
提问 * 如何从超级用户共享相同的变量,但在每个vew控制器上以不同方式进行转换? *
非常感谢
SHANI
答案 0 :(得分:1)
我会为每个返回类型转换对象的子类编写一个访问器方法。类似的东西:
- (WhiteCard *)myTypeCurrentCard {
return (WhiteCard *)self.currentCard;
}
父类有类似的东西:
- (GenericCard *)myTypeCurrentCard {
return (GenericCard *)self.currentCard;
}
在使用这些方法的每个控制器类中,消息[self myTypeCurrentCard]
将返回一个转换为当前类型的对象。此方法不保证结果对象实际上是该类型的对象,因此必须注意通过发送非WhiteCard
对象特定于白卡的消息来确保不会发生运行时错误。