我的问题是关于使用需要泛型的方法扩展类型。
我想扩展IndexPath并添加一个方法来检查它在给定的NSFetchedResultsController. 这是我的扩展:
public extension IndexPath {
func isValid(in fetchedResultsController: NSFetchedResultsController<NSManagedObject>) -> Bool {
guard let sections = fetchedResultsController.sections,
section < sections.count,
item < sections[section].numberOfObjects else {
return false
}
return true
}
在我的UICollectionViewController课堂上,我声明myFetchedResultsController:
private var myFetchedResultsController: NSFetchedResultsController<MyModel>!
MyModel是一个NSManagedObject。
但是,当我尝试调用我的新方法时:
indexPath.isValid(in: myFetchedResultsController)
我收到一个错误:
无法转换类型“NSFetchedResultsController!”的值 到预期的参数类型'NSFetchedResultsController'。插入 ' 作为!NSFetchedResultsController
我错过了什么?MyModel那NSManagedObject为什么要我投呢?