2013-08-20 3 views
0

Я обновлял некоторые проекты, чтобы использовать компилятор Xcode 4.6 и Clang LLVM, но я застрял в ошибке. Я не самый большой обозреватель obj-c, поэтому я немного застрял здесь. Я думаю, что это question касается моей проблемы, но не дает мне решения.Ошибка компилятора после обновления до Xcode 4.6 с помощью setDataSource

Мой класс является производным от 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

Ваш класс не отображается для реализации протокола источника данных. – Jeremy

ответ

0

Во-первых, ваш стол должен NOT быть его собственным источником данных. Это нарушает MVC model, который использует Cocoa. Представления должны учитывать только отображение/представление данных, он не должен хранить данные (это задание модели), а также не должен быть классом, который взаимодействует с представлением с моделью (это задача контроллера).

Обычно источник данных будет NSViewController, что соответствует NSTableViewDataSource и протокол:

@interface MyViewController : NSTableViewController <NSTableViewDataSource, NSTableViewDelegate> 
+0

Возможно ли это без добавления новых классов и интерфейсов? –

+0

На минимальном уровне вы должны реализовать протокол 'NSTableViewDataSource'. Я бы очень рекомендовал реорганизовать вашу архитектуру. В настоящее время он разбит и делает ваш код менее многоразовым, а сложнее отлаживать и сложнее тестировать изолированно. Лучше зажать его в зародыше, чем позволить ему гноиться. – BergQuester

+0

Спасибо за ваши комментарии! :) –

Смежные вопросы