【发布时间】:2017-02-09 00:48:45
【问题描述】:
如果我再次单击同一个按钮,我正在尝试撤消过滤结果。我的目标是过滤一个数组并检查一个单词是否有多个字符,以及其他一些过滤器。问题是,一旦我过滤了该数组,有没有办法返回并将过滤数组恢复到以前的情况?
这是我当前的代码
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.
}
}
}
如果有人需要更多说明,请告诉我。
【问题讨论】:
-
您需要单独存储原始数组。
-
如果我只想使用一个过滤器,那将是一个很好的解决方案,而且绝对是最简单的解决方案,但随着我不断使用不同的过滤器并在它们之上添加,我将无法做到这一点。它会成功,所以我每次都必须从乞讨开始,而且我将无法访问我之前所做的过滤器。
-
为什么会有问题?每当其中一个过滤器发生变化时,重新应用它们。如果您有如此庞大的列表或如此复杂的过滤器会导致性能问题,那么您需要解决导致该问题的设计选择。但是没有“将 var 恢复为以前的值”的概念,除非您有另一个支持变量。