Raf*_*fAl 4 generics ios swift
我正在重构我的代码并添加对 Swift泛型的支持。我被编译器错误困住了。我的代码是:
func dequeueReusableViewController<T: UIViewController where T: Reusable>() -> T {
// Try to fetch view controller from the reuse queue.
if !self.viewControllerReuseQueue.isEmpty {
return self.viewControllerReuseQueue.popFirst()! as! T
}
// Ask delegate to instantiate a new view controller.
return delegate!.reusableViewControllerForPageViewController(self)
}
Run Code Online (Sandbox Code Playgroud)
这编译顺利。然后,稍后,当我尝试使视图控制器出列时:
// Get view controller from the reuse queue.
let viewController: UIViewController = self.dequeueReusableViewController()
Run Code Online (Sandbox Code Playgroud)
我收到一个错误:
无法推断通用参数“T”
我该如何解决这个问题?我在 SO 上检查了类似的问题,但没有一个描述我的情况。
在调用返回泛型类型的泛型函数时,无法推断类型,而未指定要分配给的变量的类型或将调用强制转换为函数。你可以做:
let viewController: SomeViewController = self.dequeueReusableViewController()
Run Code Online (Sandbox Code Playgroud)
或者
let viewController = self.dequeueReusableViewController() as SomeViewController
Run Code Online (Sandbox Code Playgroud)
我会推荐第一个选项,除非需要第二个选项(例如需要分配给一个可选选项)。
| 归档时间: |
|
| 查看次数: |
2475 次 |
| 最近记录: |