我有30行的表格视图。有10000个数据点按时间顺序排列。每个表视图单元格基于filter子句提取约300个数据点。我还没有看到与Swift数组removeObjects(in:)
等效的“ removeObjectsInArray”我不确定Swift对数组的处理是否会重新分配整个数组,从而导致更大的性能下降,然后通过减小数组大小获得更大的性能提升。
答案 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。)