0

我正在升级一些项目以使用 Xcode 4.6 和 Clang LLVM 编译器,但我遇到了一个错误。我不是最大的 obj-c 极客,所以我有点卡在这里。我认为这个问题触及了我的问题的基础,但并没有给我一个解决方案。

我的类派生自 NSTableView ( @interface MyClass : NSTableView) 但是当我进行以下调用时:

[self setDataSource:self];

我收到以下错误:

Cannot initialize a parameter of type 'id<NSTableViewDataSource>' with an lvalue of type 'MyClass *'

使用 Xcode 3.2.6 对这个调用没有任何问题,但现在我很难理解为什么会出现错误。我确实在此调用之前添加了一些表列并设置了一些属性,但基本上我从上面的调用中得到了错误。

任何帮助表示赞赏。

4

1 回答 1

0

一方面,您的表视图不应该它自己的数据源。这打破了Cocoa 使用的MVC 模型。视图应该只关心显示/呈现数据,它不应该存储数据(这是模型的工作),也不应该是视图与模型接口的类(这是控制器的工作)。

通常数据源将是NSViewController符合NSTableViewDataSource和 协议的:

@interface MyViewController : NSTableViewController <NSTableViewDataSource, NSTableViewDelegate>
于 2013-08-20T16:42:33.520 回答