繁体   English   中英

与类型为 Coordinator swift 的 Array 相比的问题

[英]Problem in comparison with Array with type Coordinator swift

我有一个名为“childDidFinish”的函数,它接收一个类型为 Coordinator 的 childCoordinator,但是当我尝试比较接收到的参数和数组内的元素 Coordinator 时,错误是。

“参数类型 'Coordinator' 应为类或类约束类型的实例”

这是我的 Swift 代码,感谢您的帮助

 private(set) var childCoordinators: [Coordinator] = []

private let navigationController: UINavigationController

init(navigationController: UINavigationController){
    self.navigationController = navigationController
}
func start() {
    let eventListViewController: EventListViewController = .instantiate()
    let eventListViewModel = EventListViewModel()
    
    eventListViewModel.coordinator = self
    eventListViewController.viewModel = eventListViewModel
    navigationController.setViewControllers([eventListViewController], animated: false)
}

func startAddEvent(){
    let addEventCoordinator = AddEventCoordinator(navigationController:navigationController)
    childCoordinators.append(addEventCoordinator)
    addEventCoordinator.start()
}

func childDidFinish(_ childCoordinator: Coordinator){
    
    if let index = childCoordinators.firstIndex(where: { coordinator -> Bool in
        return  childCoordinator === coordinator//There is the problem
    }){
        childCoordinators.remove(at: index)
    }
}

我认为您的Coordinator是一个protocol 但是为了与===进行比较,它必须是一个纯类协议,这意味着它应该从AnyObject继承(在最新版本的 Swift 中;在早期的 Swift 版本中,它必须从class继承)

所以你需要做的就是在你的协议定义中添加: AnyObject

protocol Coordinator: AnyObject {
   // ...
}

如果不是这种情况,那么就像@matt 我们需要看到你的Coordinator

您也可以制作Coordinator Equatable ,无论它是什么(协议、类或结构),只需使用==而不是===

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM