使用setDataSource升级到Xcode 4.6后编译器错误

时间:2013-08-20 16:28:37

标签: objective-c macos xcode4.6

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

我的类派生自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对此调用没有任何问题,但现在我很难过为什么我收到错误。我确实在此调用之前添加了一些表列并设置了一些属性,但实际上我从上面的调用中得到了错误。

感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

首先,您的表格视图应 NOT 为其自己的数据源。这打破了Cocoa使用的MVC model。视图应该只关注显示/显示数据,它不应该存储数据(这是模型的工作),也不应该是将视图与模型连接的类(这是控制器的工作)。

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

@interface MyViewController : NSTableViewController <NSTableViewDataSource, NSTableViewDelegate>