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