A mutable, unordered collection of distinct objects that may appear more than once in the collection.


class NSCountedSet : NSMutableSet


Each distinct object inserted into an NSCountedSet object has a counter associated with it. NSCountedSet keeps track of the number of times objects are inserted and requires that objects be removed the same number of times. Thus, there is only one instance of an object in an NSSet object even if the object has been added to the set multiple times. The count method defined by the superclass NSSet has special significance; it returns the number of distinct objects, not the total number of times objects are represented in the set. The NSSet and NSMutableSet classes are provided for static and dynamic sets, respectively, whose elements are distinct.

While NSCountedSet and CFBag are not toll-free bridged, they provide similar functionality. For more information about CFBag, see the CFBag.

Subclassing Notes

Because NSCountedSet is not a class cluster, it does not have primitive methods that provide the basis for its implementation. In general, there should be little need for subclassing.

Methods to Override

If you subclass NSCountedSet, you must override any method of which you want to change the behavior.

If you change the primitive behavior of an NSCountedSet, for instance if you change how objects are stored, you must override all of the affected methods. These include:

If you change the primitive behavior, you must also override the primitive methods of NSSet and NSMutableSet.


Initializing a Counted Set

init(array: [Any])

Returns a counted set object initialized with the contents of a given array.

init(set: Set<AnyHashable>)

Returns a counted set object initialized with the contents of a given set.

init(capacity: Int)

Returns a counted set object initialized with enough memory to hold a given number of objects.

Adding and Removing Entries

func add(Any)

Adds a given object to the set.

func remove(Any)

Removes a given object from the set.

Examining a Counted Set

func count(for: Any) -> Int

Returns the count associated with a given object in the set.

func objectEnumerator() -> NSEnumerator

Returns an enumerator object that lets you access each object in the set once, independent of its count.

See Also

Specialized Sets

class NSOrderedSet

A static, ordered collection of unique objects.

class NSMutableOrderedSet

A dynamic, ordered collection of unique objects.

Beta Software

This documentation contains preliminary information about an API or technology in development. This information is subject to change, and software implemented according to this documentation should be tested with final operating system software.

Learn more about using Apple's beta software