我有一个2元素的数组,当我尝试将其转换为NSOrderedSet时,它只给我一个元素的大小
LOG("\(listTwoElement.count)")
这一行给了我2
LOG("\(NSOrderedSet.init(array: listTwoElement).count)")
这一行只给我一个元素
为什么转换为NSOrderedSet会改变数组的大小?
感谢您的帮助
答案 0 :(得分:1)
设置是一个无序的唯一元素列表。如果你试图将相同的元素放在一个集合中两次,你将只得到一个
数组是不需要唯一的元素的订单列表。您可以在数组中使用相同的元素。
OrderedSet 是两者的组合(但两者都没有)。这些项目是有序的,就像数组一样,但每个元素都必须是唯一的。
独特元素不(仅仅)意味着它们存储在内存中的不同位置,但它们不等于"等等。从某种基本意义上说。每个班级的平等可以有不同的定义。要定义它的类,实现isEqual:
的{{1}}和hash
方法。 (相等对象的哈希必须相等,不等对象的哈希值不需要不同)。
在不了解您正在处理的元素的情况下,很难说为什么当您不期望它们被评估为相同时。我将开始研究班级NSObjectProtocol
和isEqual
的实施。