В Objective-C вы можете сообщить компилятору, что тип должен быть потомком определенного класса, а также соответствовать протоколу (например, «UIViewController * foo = nil ").Передача параметра методу, который реализует протокол, и расширяет класс в swift
Я пытаюсь сделать что-то подобное с Swift, и похоже, что это требует использования дженериков. Вот что я хотел бы рассчитывать на работу:
import UIKit
protocol MyProtocol {
var foo: String {get set}
}
class MyViewController: UIViewController, MyProtocol {
var foo: String = ""
}
func doAThing<T: UIViewController where T: MyProtocol>(vc: T) -> T? {
var myViewController: T? = nil
myViewController = MyViewController(nibName: nil, bundle: nil)
return myViewController
}
Ошибки я получаю: «MyViewController» не конвертируются в «T». Могу ли я использовать дженерики с «конкретными», непараметрированными классами? Я все еще обнимаю эту часть языка, спасибо за помощь.
Что такое объявление MyView? –
Я отредактировал мой пост, он должен был прочитать MyViewController. – uniquesnowflake8