Как разыграть супер переменную по-разному внутри каждого из его детей? - PullRequest
0 голосов
/ 13 июня 2011

Текущий статус
У меня есть суперкласс с именем «GeneralCard», который является супер-компонентом многих «CardsControllers».

Каждый класс, который наследуется от «GeneralCard», имеет свой подкласс UIViewController, который содержит разные подклассы NSManagedObjects -

(WhiteCardsController -> WhiteCard, RedCardsController -> RedCard ...).

У меня много функций, которые фактически одинаковы для всех управляемых объектов. поэтому я хочу сгруппировать их в общую карту.

Проблема

Я создал «Общий» NSManagedObject с именем:

 NSManagedObject *currentCard.

Теперь на каждом контроллере View я пытаюсь разыграть:

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

Так что я смогу использовать свойства "WhiteCard".

это работает, так как я продолжаю получать ошибки вроде -

... Просмотр карт Контроллеры / WhiteCardViewController.m: 226: ошибка: запрос для участника "письмо" в что-то не структура или союз

Поскольку письмо не структурировано в NSManagedObject, но оно имеет в своем подклассе WhiteCard.

К вопросу * Как я могу разделить одну и ту же переменную с супер, но привести ее по-разному на каждом контроллере vew? *

Большое спасибо

Шани

1 Ответ

1 голос
/ 13 июня 2011

Я бы написал метод доступа для каждого дочернего класса, который возвращает объект Typecast. Что-то вроде:

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

Родительский класс будет иметь что-то вроде:

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

В каждом классе контроллера с этими методами сообщение [self myTypeCurrentCard] вернет объект, приведенный к текущему типу. Этот метод не гарантирует, что результирующий объект на самом деле является объектом этого типа, поэтому следует позаботиться о том, чтобы не возникало ошибок времени выполнения, отправляя сообщения, не относящиеся к WhiteCard объектам, а также сообщения, специфичные для белой карты.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...