0
My功能正在其中符合某個協議得到當試圖調用一個通用的功能參數,迅速
// This is my function
func instantiateViewController<T: ViewControllerIdentifier>(viewController: UIViewController) -> T
{
let controller = instantiateViewControllerWithIdentifier(viewController.identifier) as! T
return controller
}
// This is an extension of my protocol
extension ViewControllerIdentifier where Self: UIViewController
{
var identifier: String
{
return String(self)
}
}
的在另一個類的通用類型參數的ERRO,我通過上述調用實例化一個視圖控制器功能類似以下內容:
let editAssignmentViewController = storyboard.instantiateViewController(MyTestClass)
然而,Xcode是給我一個錯誤,如下面
Cannot convert value of type '(MyTestClass).Type' (aka 'MyTestClass') to expected argument type 'UIViewController'
有誰知道我的思念,以及如何解決這個錯誤
你已經定義了'instantiateViewController'來接受一個'UIViewController'的實例的參數,並且你將它傳遞給一個類型,而不是一個實例。這就是爲什麼你會得到你的錯誤。 – Rob
@rob:我的目標是將MyTestClass傳遞到'instantiateViewController'方法時,我期待返回將是'MyTestClass'視圖控制器。 – tonytran
@rob:現在我正在將該類型傳遞給我的方法。是否將參數更改爲類型而不是UIViewController? – tonytran