我有一个public void setCart(ArrayList<HashMap<String, String>> data) {
if(cart != null && cart.size() > 0)
cart.addAll(data);
else
cart = data;
}
数组,每个数组都有一个ArrayList
数组。
这种关系可以这样描述:
ArrayList<HashMap<String, String>> cart = new ArrayList<HashMap<String, String>>();
对象由核心数据管理。
当在表格视图中显示时,每个单元格都有两个按钮,因此用户可以从单独的视图控制器中选择一个战斗机;然后当它返回时它将更新分段战斗机关系。
因为if-else
与非变异cart.addAll(data);
的关系,我需要修改它以便;
如果
用户按下左键,这表示正在挑选segment.fighter中的第一个对象
用户按下右键,表示正在挑选segment.fighter中的最后一个对象
当我来更新关系时,有时候;取决于用户按下的按钮顺序; segments
中对象的位置被反转。
即:
有时候应该在0号位置的战斗机与a交换 位置1的战斗机,当这种情况永远不会发生时。
我的代码如下;
fighters
我正在使用NSMutableArray,以便我可以替换数组中的确切对象。
我可以证明它可以通过日志工作
One `segment` can have many `fighters`
然而,当它分段战斗机输出时,战斗机被交换;但我的问题是 -
为什么NSSet会反转我的数组?
非常感谢
答案 0 :(得分:1)
allObjects
是无序的对象集合。您使用的属性NSOrderedSet
返回一个数组,但正如此方法的文档所述“数组中对象的顺序未定义。”。
因此,无论何时尝试从集合中获取数组,您都可以获得不同的顺序。
为了确保订单不会改变,你应该a)为战士使用有序关系 - 但不是一个好主意,因为allObjects
是数组和集合之间的混合。 b)对从{{1}}返回的数组应用排序,以使顺序一致。这是我的首选方法。