NSMutableSet的addObject方法是否替换重复或忽略插入?

Mic*_*ord 3 collections cocoa-touch objective-c ios

我正在努力想象是否将现有对象添加到Cocoa中的一个集合实际上替换了该对象,或者只是忽略了addObject:是否存在重复.我正在使用一个自定义对象,如果特定字段相同,则该对象被视为与另一个对象相同.

我重写都isEqual:hash方法,并containsObject:不会返回true,当我打电话,但我想更新一组新的对象,由于某种原因,如果我把它不起作用addObject:.

如果它确实忽略了它,那么用什么代替最佳数据结构NSMutableSet才能产生预期效果?

ken*_*ytm 14

从描述中,它忽略了是否存在重复.

如果给定对象尚未成为成员,则将该对象添加到该集合中.

您可以将NSMutableSet转换为CFMutableSet,它具有允许更好地控制如何添加对象的方法(您希望CFSetSetValue):

  • CFSetSetValue:该值在设置 theSet.如果此值已存在于 Set中,则将替换它.

  • CFSetAddValue:如果集合中已存在,则此函数将返回而不执行任何操作.

  • CFSetReplaceValue:如果此值已经不存在中 theSet,函数什么都不做.