Swift version: 5.0
Swift gives us two equality operators,
===, that do slightly different things. You will almost certainly need to use both of them so it’s worth taking the time to learn them.
== is the equality operator, which tests that two things are equal for whatever definition of “equal” those things use. For example,
5 == 5 is true because there
== means an integer comparison, and the same is true for other built-in value types such as strings, booleans, and doubles.
Things get more complicated when
== is used with a struct you built, because by default they cannot be compared – you need to make them conform to the
=== is the identity operator, which checks whether two instances of a class point to the same memory. This is different from equality, because two objects that were created independently using the same values will be considered equal using
== but not
=== because they are different objects.
=== operator is available only when using classes because structs are designed so they are always uniquely referenced.
Available from iOS 8.0
This is part of the Swift Knowledge Base, a free, searchable collection of solutions for common iOS questions.