ios - 如果我再次单击同一个按钮,我将尝试撤消筛选结果

标签 ios arrays swift filter

如果我再次单击同一个按钮,我将尝试撤消过滤结果。我的目标是过滤一个数组并检查一个单词是否有多个字符,以及一些其他过滤器。问题是,一旦我过滤了那个数组,有没有办法返回并将 filteredArray 恢复到它以前的情况?

这是我当前的代码

Class FilterClas {

 var filteredArray = [InfoObject]()
 var isChecked = false 

@IBAction func filterArray(_ sender: Any) {
     if !isChecked {
        isChecked = true


        filteredArray = filteredArray.filter({ m in m.firstImg.characters.count < 160})
        print(filteredArray)
         }
      } else {
        isChecked = false
 // What do I do here to revert the changes I made to the array. 
      }
     }
   }

如果有人需要更多说明,请告诉我。

最佳答案

只是为了使其他一些答案和评论具体化,您可以跟踪您的过滤器并根据需要应用它们。例如:

class Filter {
    var array: [Int] = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
    var filters: [(Int) -> Bool] = []

    var filteredArray: [Int] {
        var filteredArray = array
        for filter in filters {
            filteredArray = filteredArray.filter(filter)
        }
        return filteredArray
    }
}

let f = Filter()
f.filteredArray
f.filters.append { $0 < 8 }
f.filteredArray
f.filters.append { $0 % 2 == 0 }
f.filteredArray
f.filters.append { $0 > 2 }
f.filteredArray

或者,如果您希望能够打开和关闭单个过滤器,您可以这样做:

struct Filter {
    let filter: (Int) -> Bool
    var enabled: Bool
}

class Filtered {
    var array: [Int] = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
    var filters: [Filter] = [
        Filter(filter: { $0 < 8 }, enabled: true),
        Filter(filter: { $0 % 2 == 0 }, enabled: false),
        Filter(filter: { $0 > 2 }, enabled: true),
    ]

    var filteredArray: [Int] {
        var filteredArray = array
        for filter in filters {
            if filter.enabled {
                filteredArray = filteredArray.filter(filter.filter)
            }
        }
        return filteredArray
    }
}

let f = Filtered()
f.filteredArray
f.filters[1].enabled = true
f.filteredArray

关于ios - 如果我再次单击同一个按钮,我将尝试撤消筛选结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42126328/

相关文章:

swift - 泛型的尾随闭包?

python - Xcode 在 iOS 中使用 Python.framework 时出错,架构 i386 的 undefined symbol

ios - 根据每个 iPhone 大小更改字体大小

ios - swift 2.0 :Need to display image(PFFile) on PFQueryTableViewController from Parse?

ios - 使用 swift 3 将字符串从开始位置剪切到结束位置

macos - 使用 init(rect :inTexture:)?) 时我的 Sprite 发生了什么

php - in_array 未在数组中找到值

php - 如何将发布数据放入 CodeIgniter 中的数组中?帖子项目是数组

javascript - jQuery 循环遍历 PHP 数组的对象

swift - 如何在swift中实现无限滚动背景