NOOB Проблемы с получением результатов из кода (более конкретно с NSComboBox) - PullRequest
0 голосов
/ 28 октября 2010

Я знаю, что это, вероятно, простой вопрос, но вот что я ломаю голову, чтобы понять это:

Я знаю, что это:

- (id)comboBox:(NSComboBox *)aComboBox objectValueForItemAtIndex:(NSInteger)index {
return [midiModelContents objectAtIndex:index];

}

вернет товар по указанному индексу. У меня вопрос, какой код мне нужно использовать для вызова этой подпрограммы?

Я пробовал что-то вроде этого:

NSString *curData =(comboBox: midiModel objectValueForItemAtIndex:0);

но я получаю "ошибку: 'comboBox' undeclared"

Может кто-нибудь помочь мне с понятием, что я облажался?

1 Ответ

2 голосов
/ 28 октября 2010

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

Вы получаете бессмысленное сообщение об ошибке, потому что вынаписал (что в Objective-C) бессмысленный код.Допустимое выражение сообщения Objective-C будет успешно скомпилировано и выполнено, но я не думаю, что оно выполнит то, что вы ожидаете.

Видите ли (и это второе), comboBox:objectValueForItemAtIndex:обычно это не сообщение, которое вы отправляете себе. Поле со списком отправляет это сообщение вам, когда вы являетесь его источником данных.Источники данных - это вариант шаблона делегата, который подробно описан в Руководстве по основам какао .

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

Документ «Язык» и документ «Основы какао» являются необходимыми для чтения всеми программистами Какао, а также Руководство по управлению памятью для какао .Вы должны прочитать все три документа от начала до конца.

Решение вашей непосредственной проблемы состоит в том, чтобы объект, который отвечает на comboBox:objectValueForItemAtIndex:, был источником данных поля со списком.Вы, вероятно, подключите это в IB, в том же самом месте, где вы создали поле со списком.

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

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

...