Xcode 未调用numberOfRowsInTableView

Xcode 未调用numberOfRowsInTableView,xcode,methods,nstableview,Xcode,Methods,Nstableview,我正在设置一个基于视图的NSTableView,但是没有调用方法numberOfRowsInTableView。当我检查是否调用它时,日志返回nil 我已将我的AppDelegate设置为符合数据源和代理协议,并已通过IB将它们连接到AppDelegate。我的数组将在应用程序完成加载时初始化,该数组将为表提供数据 我的代码如下: 接口 #import <Cocoa/Cocoa.h> @interface RLTAppDelegate : NSObject <NSApplic

我正在设置一个基于视图的NSTableView,但是没有调用方法numberOfRowsInTableView。当我检查是否调用它时,日志返回nil

我已将我的AppDelegate设置为符合数据源和代理协议,并已通过IB将它们连接到AppDelegate。我的数组将在应用程序完成加载时初始化,该数组将为表提供数据

我的代码如下:

接口

#import <Cocoa/Cocoa.h>

@interface RLTAppDelegate : NSObject <NSApplicationDelegate, NSTableViewDataSource, NSTableViewDelegate>

@property (assign) IBOutlet NSWindow *window;
@property (weak) IBOutlet NSTableView *tableView;
@property (copy) NSArray *nameArray;

@end

我刚刚做了一个测试项目,看看发生了什么

如果在
applicationdFinishLaunching
numberOfRowsInTableView
上放置断点,您将看到在收到
applicationdFinishLaunching
通知之前调用了
numberOfRowsInTableView
方法

因此,在填充数组之前,您需要它


通常情况下,发生这种情况时会有一个单独的类,并且在初始化该类时设置数组,因此不会发生这种情况。

他是正确的,因为您使用的是一个字符串,只有一个运算符,如果对象为nil,它将不会在控制台中记录。您是一个救生员。我想我需要拆分我的模型类,先填充它,然后再将结果发送到数组。@TeenDev是的,我看到了(或者没有看到)。谢谢你指出!
#import "RLTAppDelegate.h"

@implementation RLTAppDelegate

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
  self.nameArray = [[NSArray alloc] initWithObjects:@"Ryan", nil];
}

- (NSInteger)numberOfRowsInTableView:(NSTableView *)tableView {

  return [self.nameArray count];
  NSLog(@"%lu", self.nameArray.count);
}

- (NSView *)tableView:(NSTableView *)tableView
   viewForTableColumn:(NSTableColumn *)tableColumn
              row:(NSInteger)row {

NSTextField *result = [tableView makeViewWithIdentifier:@"name" owner:self];
result.stringValue = [self.nameArray objectAtIndex:row];
return result;
}

@end