填充tableview混淆

时间:2013-02-04 01:54:30

标签: objective-c cocoa

在mac osx 10.7上使用cocoa我用一些行填充了一个TableView,我有一些混淆,

names是包含NSString *

的NSArray *
- (id)tableView:(NSTableView *)aTableView objectValueForTableColumn:(NSTableColumn *)aTableColumn row:(NSInteger)rowIndex;
{
  return [names objectAtIndex:rowIndex];
}

我在apple的文档中检查了数据源的协议引用

https://developer.apple.com/library/mac/#documentation/Cocoa/Reference/ApplicationKit/Protocols/NSTableDataSource_Protocol/Reference/Reference.html

我在上面的函数中返回一个NSString *,该方法的签名只返回id而不是NSString *。文档没有告诉我它刚刚说的返回类型

 An item in the data source in the specified tableColumn of the view.

我的情况是简单的NSString *有意义并且它有效,但我不确定。我想知道这个隐含的知识来自于这个方法必须返回什么类型的数据,因为签名中没有提及,方法的文档中没有任何内容:/

有什么建议吗?我来自.Net / android / background那里的文档更有意义,因为那些是强类型语言,...

1 个答案:

答案 0 :(得分:0)

您应返回的对象类型取决于NSTableView中单元格的定义方式。默认情况下,在Interface Builder中创建NSTableView时,单元格定义为NSTextFieldCell,因此可以为这些单元格返回NSString。但是,您可以定义单元格以接受代码中的其他类型的对象(例如NSImageCell,NSButtonCell等)。