我正在尝试返回 TransactionItemViewModel
的专用类型 DepositItemViewModel
但出现编译错误:无法将 DepositItemViewModel 转换为返回类型 TransactionItemViewModel .
Cannot convert DepositItemViewModel to return type TransactionItemViewModel
这是我的类声明:
class Deposit: Transaction
class TransactionItemViewModel<T: Transaction>
class DepositItemViewModel: TransactionItemViewModel<Deposit>
最佳答案
使用协议(protocol)
protocol P{}
class A: P{}
class B<T: P>{}
class C:B<A>{}
func f(o: AnyObject)->B<P> {
return C()
}
给你
error: using 'P' as a concrete type conforming to protocol 'P' is not supported
使用类
class P{}
class A: P{}
class B<T: P>{}
class C:B<A>{}
func f(o: AnyObject)->B<P> {
return C()
}
给你
error: cannot convert return expression of type 'C' to return type 'B<P>'
两种情况下的返回类型都必须是 B<A>
在您的情况下,您必须将返回类型更改为 TransactionItemViewModel<Deposit>
关于Swift 不接受泛型特化作为返回类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44249307/