2014-09-20 2 views
2

Я хочу назначить класс делегату, но он вызывает ошибку: Ожидаемое имя участника: '.' Как я мог это сделать?Это способ установить класс в качестве делегата в Swift?

let frc = NSFetchedResultsController(fetchRequest: fr, managedObjectContext: Utility.managedObjectContext(), sectionNameKeyPath: nil, cacheName: nil) 
frc.delegate = Utility.class 
+1

Как это будет работать, хотя? Делегат является экземпляром класса. Я не уверен, что это произойдет. – Fogmeister

+0

В Objective-C я делал это несколько раз. Класс также является объектом, подобным экземпляру класса. –

+0

Вы уверены? Вы уверены, что не выбрали синглтон или что-то подобное в качестве делегата? – Fogmeister

ответ

2

Класс не может использоваться в качестве делегата. Делегат должен быть экземпляром класса. То, что не было создано, не может быть ссылкой. То, что не существует, не может быть использовано.

Пример, который вы даете NSURLConnection, не использует класс в качестве делегата.

Он использует класс, соответствующий протоколу NSURLConnectionDelegate, и создает объект этого класса во время инициализации. Магия происходит при инициализации объекта NSURLConnection.

Это нечто совершенно иное, чем установка .delegate на уже существующий объект.

Setter не создает для вас объект, который использовался для методов протокола, но предполагается, что он снабжен уже созданным объектом.

То же самое относится и к объекту-С.

Заканчивать http://www.iosnomad.com/blog/2014/8/6/swift-nsfetchedresultscontroller-trickery примеры, как использовать NSFetchedResultsController в Swift класса (ну вы могли бы сделать это в Objective-C очень похожи)

+0

О, спасибо за объяснение, что я не знал, что это сделала nsurlconnection. Но тогда я больше не использую это. Лол. – Fogmeister

+0

Привет scythe42, быстрый вопрос, как я могу установить делегат = self, если я не могу создать экземпляр объекта, потому что это общий класс, к которому у меня нет доступа в другом классе, но я хочу, чтобы класс generics вызывал функцию в другом классе, отсюда и необходимость делегировать? – Marin

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