使用完后逐个删除数组中的每个项目?

问题描述 投票:-1回答:1

我有一个映射,在该图中,我从数组中添加了一个组件之后,我希望从该数组中删除该特定组件。我尝试了过滤然后删除的方法,但它只能从数组中删除一项。使用完阵列后,我需要删除阵列的每个项目。它是这样的:

   private var labelViews: [MapLabelView] = []


    private func removeAllLabels() {
        guard let mapController = viewModel.mapController,
            let currentMap = mapController.currentMap else {
                return
        }
    >         labelViews.forEach { view in
    >             DispatchQueue.main.async {
    >                 mapController.removeComponent(view, on: currentMap)
    >                 self.labelViews.removeAll(where: {$0 == view})                
                  if let index = self.campusLabelViews.firstIndex(of: view) 
                  {self.campusLabelViews.remove(at: index)}//This is what I tried doing, but its only removing the first view and not ones after that.
}
ios arrays swift filter
1个回答
0
投票

这里是扩展名,通过它可以获取数组中存在的某个视图的所有索引

extension Array where Element: Equatable {
    func allIndexes(of element: Element) -> [Int] {
        return self.enumerated().filter({ element == $0.element }).map({ $0.offset })
    }
}

所以您的代码将成为

let indexs = self.campusLabelViews. allIndexes(of: view) // it return all indexes of that particular view 
for index in indexs {
    self.campusLabelViews.remove(at: index)
  }
© www.soinside.com 2019 - 2024. All rights reserved.