Swift version: 5.6
One of my favorite little gems in Cocoa Touch is called
NSCountedSet, and it's the most efficient way to count objects in a set. Here's the code:
let set = NSCountedSet() set.add("Bob") set.add("Charlotte") set.add("John") set.add("Bob") set.add("James") set.add("Sophie") set.add("Bob") print(set.count(for: "Bob"))
Now to how it works: a set is like an array, except each item can appear only once. If we used an array in the above code, it would contain seven objects: three Bobs, one Charlotte, one John, one James and one Sophie. If we used a Swift set in the above code, it would contain four objects: one Bob, one Charlotte, one John, one James and one Sophie – the set ensures each item appears only once.
Now for the twist:
NSCountedSet works similar to a set insofar as each object can appear only once, but it keeps track of how many times each item was added and removed. So, our counted set will have four objects in (like it would if it were a regular set), but
NSCountedSet has a
count(for:) method that will report back that Bob was added three times.
SAVE 50% To celebrate WWDC23, all our books and bundles are half price, so you can take your Swift knowledge further without spending big! Get the Swift Power Pack to build your iOS career faster, get the Swift Platform Pack to builds apps for macOS, watchOS, and beyond, or get the Swift Plus Pack to learn advanced design patterns, testing skills, and more.
Available from iOS 2.0
This is part of the Swift Knowledge Base, a free, searchable collection of solutions for common iOS questions.
Link copied to your pasteboard.