Как сделать класс совместимым с протоколом в swift?

Мне нужно сделать класс совместимым с протоколом в Swift, чтобы реализовать делегат. Как мне это сделать?

Ответы

Ответ 1

class YourClass: SuperClassIfAny, FirstProtocol, SecondProtocol {
}

Обратите внимание, что для некоторых протоколов требуется реализовать методы делегирования. Например, UITableViewDataSource требует для реализации

func tableView(tableView: UITableView!, numberOfRowsInSection section: Int) -> Int

и

func tableView(tableView: UITableView!, cellForRowAtIndexPath indexPath: NSIndexPath!) -> UITableViewCell!

Если они не реализованы классом, соответствующим протоколу, Xcode даст вам ошибку компиляции (всегда проверяйте объявление протокола, Cmd + Click покажет вам, какие методы вы должны).

Ответ 2

Xcode 6 beta 7 слегка изменил протокол для UITableViewDataSource, чтобы он соответствовал следующему синтаксису для двух требуемых реализаций:

6b7: UITableViewDataSource

func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int 

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell!

по сравнению с 6b6

func tableView(tableView: UITableView!, numberOfRowsInSection section: Int) -> Int

func tableView(tableView: UITableView!, cellForRowAtIndexPath indexPath: NSIndexPath!) -> UITableViewCell

Ключевым отличием является то, что UITableView, NSIndexPath и UITableViewCell больше не являются < неявно отключенными опциями