为什么我不能使用 Reactive<UICollectionView> 类型的 model<T>(at indexPath: IndexPath) 方法?

Why I cannot use model<T>(at indexPath: IndexPath) method of Reactive<UICollectionView> type?

我想在特定的 indexPath 获取 UICollectionView 的数据模型,我注意到有一个方法叫做 model<T>(at indexPath: IndexPath),我认为这就是我需要的,但是编译器这样抱怨

我也注意到RxSwift提供了其他的实例方法,比如modelSelected<T>(_ modelType: T.Type),我可以像图片一样毫无错误地使用它,我认为它们是同一类型(都是实例方法),但是我明白了不同的结果,使用这种方法时我错过了什么吗?如果有人可以提供一些建议,我将很高兴。

model(at:) 方法 returns 泛型。您没有为编译器提供足够的信息来推断泛型类型,这导致编译器假设您正在尝试做一些完全不同的事情。另外,请记住调用可能会抛出。改为这样做:

let myThing: MyThing? = try? collectionView.rx.model(at: indexPath)

或者你可以这样做:

let myThing = try? collectionView.rx.model(at: indexPath) as MyThing

modelSelected(_:) 方法有效,因为 T 的类型被指定为参数,因此编译器能够计算出来。