***非法的NSTableView数据源(<nsview:0x102535290 =“”>)。必须实现numberOfRowsInTableView:和tableView:objectValueForTableColumn:row:</nsview:>

时间:2014-03-14 04:23:53

标签: objective-c xcode macos nstableview

好的,这让我发疯,我有一个我一直在研究的Xcode OSX应用程序。我最近做了一些更改,我在编译时开始收到以下错误:

 iModerate Desktop[72478:303] *** Illegal NSTableView data source (<NSView: 0x102535290>).  
Must implement numberOfRowsInTableView: and tableView:objectValueForTableColumn:row:

我无法锻炼它的来源,我已经在appDelegate中实现了这两种方法:

- (NSView *)tableView:(NSTableView *)tableView objectValueForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row{
// The return value is typed as (id) because it will return a string in most cases.
id returnValue=nil;
// The column identifier string is the easiest way to identify a table column.
NSString *columnIdentifer = [tableColumn identifier];
// Get the name at the specified row in namesArray
NSString *theName = [[self.twitterClientsController arrangedObjects] objectAtIndex:row];
// Compare each column identifier and set the return value to
// the Person field value appropriate for the column.
if ([columnIdentifer isEqualToString:@"name"]) {
    returnValue = theName;
}
return returnValue;

}

和这个

- (NSInteger)numberOfRowsInTableView:(NSTableView *)tableView {
return[[self.twitterClientsController arrangedObjects] count];
}

app delegate设置为NSTableViewDelegate

现在额外的奇怪/令人沮丧的事情是,我在xib中没有NSTableView,我做了,但我已将它们全部删除了。我有事件在BBedit中打开了XIB并搜索了NSTableView,并且有100%没有在那里!

所以,请帮助!如果我能解决什么NSView:0x102535290,我可以跟踪它。

非常感谢帮助保存我的理智!

加雷

1 个答案:

答案 0 :(得分:1)

我这样解决了:

  • 从interfaceBuilder中删除数据源和委托连接。
  • 在.h文件中为您的tableview创建一个outlet属性
  • applicationDidFinishLaunching方法中的.m文件中的
  • 为tableview手动设置委托和数据源

    [self.tableView setDelegate:self];
    [self.tableView setDataSource:self];