【发布时间】:2015-01-28 17:22:04
【问题描述】:
在 Objective-C 中,您可以通知编译器类型应该是特定类的后代,并且还符合协议(例如“UIViewController *foo = nil”)。
我正在尝试用 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。
标签: ios templates generics swift protocols