如何在他的每个孩子的内部以不同方式施放超级变量?

时间:2011-06-13 09:38:04

标签: ios nsmanagedobject superclass

当前状态
我有一个名为“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

1 个答案:

答案 0 :(得分:1)

我会为每个返回类型转换对象的子类编写一个访问器方法。类似的东西:

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

父类有类似的东西:

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

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