gpt4 book ai didi

ios - 如何在每个 child 的内部以不同的方式转换 super 变量?

转载 作者:行者123 更新时间:2023-11-29 05:03:17 25 4
gpt4 key购买 nike

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

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com