gpt4 book ai didi

swift - 使用需要泛型的方法扩展 Swift 类型

转载 作者:行者123 更新时间:2023-11-28 07:44:29 25 4
gpt4 key购买 nike

我的问题是关于使用需要泛型的方法扩展类型。

我想延长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>!

MyModelNSManagedObject .

但是,当我尝试调用我的新方法时:

indexPath.isValid(in: myFetchedResultsController)

我得到一个错误:

无法转换“NSFetchedResultsController!”类型的值到预期的参数类型“NSFetchedResultsController”。插入 ' 作为! NSFetchedResultsController

我错过了什么? MyModelNSManagedObject那它为什么要我施法呢?

最佳答案

这比我想象的要快。事实证明,更改签名以包含 <T: NSManagedObject>修复它:

func isValid<T: NSManagedObject>(in fetchedResultsController: NSFetchedResultsController<T>) -> Bool

关于swift - 使用需要泛型的方法扩展 Swift 类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51443447/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com