0

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

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

(WhiteCardsController --> WhiteCard、RedCardsController --> RedCard ...)。

对于所有 managedObjects,我有很多功能实际上是相同的。所以我想将它们分组在通用卡中。

问题

我创建了一个名为“General”的 NSManagedObject:

 NSManagedObject *currentCard.

现在在我尝试投射的每个视图控制器上:

self.currentCard = (WhiteCard*)self.currentCard;

所以我将能够使用“WhiteCard”属性。

当我不断收到错误之类的错误时,该剂量起作用了-

...卡片视图控制器/WhiteCardViewController.m:226:错误:请求成员“字母”不是结构或联合

因为字母不是在 NSManagedObject 中结构化的,而是在他的 WhiteCard 子类中。

对于这个问题 *我如何从超级共享相同的变量但在每个 vew 控制器上以不同的方式投射它?*

非常感谢

沙尼

4

1 回答 1

1

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

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

父类将具有以下内容:

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

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

于 2011-06-13T13:44:00.757 回答