NOOB从代码中获取结果的问题(更具体地说,使用NSComboBox)

时间:2010-10-27 22:37:29

标签: cocoa nscombobox

我知道这可能是一个简单的问题,但这就是我正在绞尽脑汁想出这个问题:

我知道这个:

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

}

将在提供的索引处返回该项目。我的问题是,我需要用什么代码来调用这个例程?

我尝试过这样的事情:

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

但我得到一个“错误:'comboBox'未声明”

任何人都可以帮助我解决我搞砸的概念吗?

1 个答案:

答案 0 :(得分:2)

首先,您可能需要阅读the Objective-C Programming Language以了解向对象(包括您自己)发送消息的正确语法。

您收到一条无意义的错误消息,因为您已经编写了(Objective-C中的内容)无意义代码。一个有效的Objective-C消息表达式将成功编译并运行,但我认为它不会像你期望的那样。

你看(这是第二件事),comboBox:objectValueForItemAtIndex:通常不是你发给自己的信息。当您是其数据源时,组合框会将该消息发送给您。数据源是委托模式的变体,属于the Cocoa Fundamentals Guide中详细描述的内容。

(你可以向自己发送消息,如果你故意想要通过组合框的相同对象值检索路径,它甚至可能有意义,但这个不是你需要做的使组合框工作。)

语言文档和Cocoa Fundamentals文档都是每个Cocoa程序员必读的内容,以及the Memory Management Guide for Cocoa。你应该从头到尾阅读所有三份文件。

直接问题的解决方案是响应comboBox:objectValueForItemAtIndex:的对象是组合框的数据源。你可能会在IB中,在你创建组合框的同一个笔尖中将它连接起来。

如果这些都没有任何意义,那么我建议你再次阅读这些文件。他们会解释一切。

如果你真的只是想要以与组合框相同的方式询问自己的对象值(即,你已经使用了组合框并打算以相同的方式获取对象值),那么您仍然需要阅读Objective-C编程语言文档,以了解向您发送该消息的正确语法。