簡體   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