数组到NSOrderedSet将列表大小更改为1

时间:2017-12-06 17:33:06

标签: arrays swift core-data nsorderedset

我有一个2元素的数组,当我尝试将其转换为NSOrderedSet时,它只给我一个元素的大小

      LOG("\(listTwoElement.count)")

这一行给了我2

   LOG("\(NSOrderedSet.init(array: listTwoElement).count)")

这一行只给我一个元素

为什么转换为NSOrderedSet会改变数组的大小?

感谢您的帮助

1 个答案:

答案 0 :(得分:1)

设置是一个无序的唯一元素列表。如果你试图将相同的元素放在一个集合中两次,你将只得到一个

数组是不需要唯一的元素的订单列表。您可以在数组中使用相同的元素。

OrderedSet 是两者的组合(但两者都没有)。这些项目是有序的,就像数组一样,但每个元素都必须是唯一的。

独特元素不(仅仅)意味着它们存储在内存中的不同位置,但它们不等于"等等。从某种基本意义上说。每个班级的平等可以有不同的定义。要定义它的类,实现isEqual:的{​​{1}}和hash方法。 (相等对象的哈希必须相等,不等对象的哈希值不需要不同)。

在不了解您正在处理的元素的情况下,很难说为什么当您不期望它们被评估为相同时。我将开始研究班级NSObjectProtocolisEqual的实施。