NOOB Проблемы с получением результатов из кода (более конкретно с NSComboBox)
Я знаю, что это, вероятно, простой вопрос, но вот что я пытаюсь понять:
Я знаю что это:
- (id)comboBox:(NSComboBox *)aComboBox objectValueForItemAtIndex:(NSInteger)index {
return [midiModelContents objectAtIndex:index];
}
вернет товар по указанному индексу. У меня вопрос, какой код мне нужно использовать для вызова этой процедуры?
Я пробовал что-то вроде этого:
NSString *curData =(comboBox: midiModel objectValueForItemAtIndex:0);
но я получаю "ошибку: 'comboBox' undeclared"
Может кто-нибудь помочь мне с понятием, что я облажался?
1 ответ
Во-первых, вы можете прочитать язык программирования Objective-C, чтобы узнать правильный синтаксис для отправки сообщений объектам, в том числе и себе.
Вы получаете бессмысленное сообщение об ошибке, потому что вы написали (что в Objective-C) бессмысленный код. Допустимое выражение сообщения Objective-C будет скомпилировано и успешно выполнено, но я не думаю, что оно будет делать то, что вы ожидаете.
Вы видите (и это второе), comboBox:objectValueForItemAtIndex:
обычно это не сообщение, которое вы отправляете себе. Поле со списком отправляет это сообщение вам, когда вы являетесь его источником данных. Источники данных представляют собой разновидность модели делегатов, которая подробно описана в Руководстве по основам какао.
(Вы можете отправить сообщение себе, и это может иметь смысл, если вы намеренно хотите пройти по тому же пути поиска объекта-значения, что и поле со списком, но это не то, что вам нужно сделать, чтобы комбинированная коробка.)
Документ "Язык" и документ "Основы какао" являются необходимыми материалами для каждого программиста Какао, а также Руководство по управлению памятью для какао. Вы должны прочитать все три документа от начала до конца.
Решение вашей непосредственной проблемы - для объекта, который отвечает comboBox:objectValueForItemAtIndex:
быть источником данных поля со списком. Вы, вероятно, подключите это в IB, в том же самом месте, где вы создали поле со списком.
Если ничего из этого не имеет смысла, то все, что я могу вам предложить, это снова прочитать эти документы. Они все объяснят.
Если вы действительно просто хотели спросить себя о значении объекта так же, как это делает поле со списком (то есть у вас уже работает поле со списком и вы намерены получить значение объекта таким же образом для какой-то другой цели), тогда вам все еще нужно Прочитайте документ на языке программирования Objective-C, чтобы узнать правильный синтаксис, чтобы отправить себе это сообщение.