Указание, какой объект получить супер

Как говорится в заголовках, я хочу указать супер NSArrayControllerчто-то вроде self = [super[NSArrayController] function], но не повезло в поисках этого. Есть идеи? Заранее спасибо.

Отредактировано, чтобы удалить абстрактные примеры, поскольку они вводят людей в заблуждение относительно характера моего вопроса.

Цель этого состоит в том, чтобы программно сделать то, что простая привязка 'add' из NSArrayController к NSButton сделала бы в IB. В моем приложении есть несколько arrayControllers, поэтому я хочу указать, какой из них я хочу получить с помощью кода.

Причина, по которой я ищу супер-объект NSArrayController, заключается в том, что у меня сложилось впечатление, что следует обращаться к модели, а не к контроллеру (NSArrayController), а моя модель - это модель базовых данных, к которой, как я полагаю, я могу добраться, используя супер NSArrayController я указываю по имени. Возможно, есть более прямой способ добавления к модели данных.

1 ответ

Решение

Вы задаете неправильный вопрос.

Во-первых, давайте различать класс и экземпляр класса. Обратите внимание, что могут быть и действительно часто встречаются несколько экземпляров одного и того же класса.

Класс C может быть подклассом другого класса A, затем A это суперкласс C, Предположим, у вас есть экземпляр c класса C, Затем в реализации методов класса C, self выступает за пример c сам и super выступает за пример c как пример своего суперкласса A, В некотором смысле, экземпляр класса C также является экземпляром класса A,

Объекты могут иметь иные отношения, чем супер или подклассы. Например, класс C может иметь в своем интерфейсе переменную экземпляра B* b; В этом случае экземпляр c класса C имеет указатель на экземпляр b класса B, В этом случае, c не является экземпляром класса B,

Отношение между NSArrayController и контекст управляемого объекта является одним из последних. Экземпляр NSArrayController содержит указатель на экземпляр NSManagedObjectContext (МОС).

То, что вы хотите сделать, это не получить super вашей NSArrayController, Вместо этого вы хотите связать МО с NSArrayController, Теперь, как ты это получил? Чтобы узнать это, вы открываете ссылку в XCode или в Интернете на сайте Apple Developer Connection, см. Здесь. Сделай это прямо сейчас. Пройдите через методы. Ты не найдешь того, кто даст тебе Мок.

Затем вы переходите к началу этой страницы и следите за суперклассом NSArrayController, Смотрите эту ссылкуNSObjectController, Теперь пройдемся по списку методов. Ты находишь -[NSObjectController managedObjectContext], который делает работу!

В заключение: если вы хотите, чтобы moc был связан с NSArrayControllerнужно просто сделать

NSManagedObjectContext* moc= [arrayController managedObjectContext];

где arrayController это пример NSArrayController Вы хотите иметь дело с Например, если у вас есть несколько экземпляров NSArrayControllers в перо, вы должны иметь несколько IBOutlets в приложении делегат, скажем, arrayController1, arrayController2и т. д. (которые являются очень плохими именами переменных). Затем вы выбираете тот, с которым хотите иметь дело.

Другие вопросы по тегам