我正在升级一些项目以使用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对此调用没有任何问题,但现在我很难过为什么我收到错误。我确实在此调用之前添加了一些表列并设置了一些属性,但实际上我从上面的调用中得到了错误。
感谢任何帮助。
答案 0 :(得分:0)
首先,您的表格视图应 NOT 为其自己的数据源。这打破了Cocoa使用的MVC model。视图应该只关注显示/显示数据,它不应该存储数据(这是模型的工作),也不应该是将视图与模型连接的类(这是控制器的工作)。
通常,数据源将是符合NSViewController
和协议的NSTableViewDataSource
:
@interface MyViewController : NSTableViewController <NSTableViewDataSource, NSTableViewDelegate>