iOS Swift过滤时是否值得尝试从Swift数组中删除对象?

时间:2018-10-23 13:46:22

标签: ios arrays swift nsmutablearray

我有30行的表格视图。有10000个数据点按时间顺序排列。每个表视图单元格基于filter子句提取约300个数据点。我还没有看到与Swift数组removeObjects(in:)

等效的“ removeObjectsInArray”
  • 我是否需要将swift数组转换/转换为NSMutableArray才能 从数组中删除对象?
  • 是否值得尝试删除对象 从快速数组?

我不确定Swift对数组的处理是否会重新分配整个数组,从而导致更大的性能下降,然后通过减小数组大小获得更大的性能提升。

2 个答案:

答案 0 :(得分:1)

最好不要做一些铸造工作,而这可以通过纯粹的快速方法来完成。

这里是一个示例:

    var mainArraySwift: [String] = []
    mainArraySwift.append("a")
    mainArraySwift.append("b")
    mainArraySwift.append("c")
    mainArraySwift.append("d")
    mainArraySwift.append("e")
    print(mainArraySwift)

    var arrayToBeRemoved: [String] = []
    arrayToBeRemoved.append("a")
    arrayToBeRemoved.append("b")
    arrayToBeRemoved.append("c")
    print(arrayToBeRemoved)

    mainArraySwift.removeAll { (value) -> Bool in
        return arrayToBeRemoved.contains(value)
    }
    print(mainArraySwift)

输出为:

["a", "b", "c", "d", "e"]
["a", "b", "c"]
["d", "e"]

与NSMutableArray的方法不完全匹配,但这是您感兴趣的事情。

答案 1 :(得分:0)

提出的问题过于广泛/模糊。您甚至没有提供足够的信息来指示问题所在,即为什么您认为需要从数据点数组中删除任何内容。如果您需要有关效率的具体建议,请显示阵列(或至少描述一下)以及每个单元需要它的内容。

表视图而言,您需要记住的关键信息是对cellForRowAt:的调用必须能够将其放在数据立即。因此,您绝对不应该对cellForRowAt:本身进行任何过滤。您需要进行架构设计,以使总有30个数组(或其他任何内容)对应于您的30行,并随时准备好等待 每一行的数据。

但是关于如何的操作,您没有提供有关数据点数组或过滤器操作的性质和形式的信息,因此无法说出是否有效率在那个领域获得。也许您在做什么并不是没有效率的。也许数组不是最好的数据模型。很难说,因为您什么也没有提供。 (尽管,无论“目的”到底是什么,您都应该为此目的而强制转换为NSMutableArray。)