【发布时间】:2016-10-01 21:55:19
【问题描述】:
我有一个包含几个CGPoints 数组和数组数组的函数。我一直在“手动”从每个数组中删除点并将它们一一添加回来。这无疑是一种乏味且低效的方法。我正在寻找一种更有效的方法来处理数组的删除和附加点。这是我的代码:
func setSpritePositions () {
groupA1 = [p1, p4, p6, p8]
groupA2 = [p1, p3, p2, p5]
groupB1 = [p1, p7, p2, p6]
groupB2 = [p9, p4, p3, p2]
groupB2 = [p2, p4, p5, p8]
groupC1 = [p1, p7, p2, p7]
groupC2 = [p9, p4, p3, p2]
groupC3 = [p4, p5, p6, p7]
groupC4 = [p5, p1, p3, p4]
groupA = [groupA1, groupA2]
groupB = [groupB1, groupB2, groupB3]
groupC = [groupC1, groupC2, groupC3, groupC4]
groups = [groupA, groupB, groupC]
}
例如,我如何从包含它们的数组中删除点 p1、p3 和 p7,并记下这些数组并将位置附加回来。我将如何实现这一目标?正如我所说,我一直在做,这太麻烦了。
更新
我正在使用各种位置组来限制游戏中精灵的移动。有时我想删除某些位置,并能够知道稍后将它们附加回哪些数组。
【问题讨论】:
-
迭代
groups。对于每个数组,迭代其数组。对于这些数组中的每一个,查看它是否包含该点。如果是这样,删除然后附加它。 -
@rmaddy 你是指通过
groups访问所有其他数组吗?我正在使用所有其他数组,因此groups单独的更改不会在其他数组中受到影响,因为 swift 数组是值类型。我正在考虑使用NSArrays,但要操纵它们以获得某些结果将非常非常困难。 -
"并将位置追加到后面" 你真的是指在此处追加(例如,放在数组的末尾),还是真正的意思是“有时 p1 是活动的,有时不是。”我假设是后者,如果 p1 对一个组无效,那么它对所有组都无效。
-
@RobNapier 是的,如果有人说,
p1对一组无效,对所有人无效。实际上,使点处于活动或不活动状态将获得与删除和附加相同的结果。虽然似乎使点活跃和不活跃的方法可能是一个更好的解决方案。 -
@RobNapier 你能帮我看看下面的问题吗?我真的很感激任何帮助。 stackoverflow.com/questions/42120076/…