[英]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.