Как сделать класс совместимым с протоколом в 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 больше не являются < неявно отключенными опциями