Быстрый ответ:
Мы используем хэш-целое число в объекте, чтобы иметь возможность быстро идентифицировать равные объекты, получая экземпляр объекта перед индексом, который мы ищем.
Не быстрый ответ:
Когда вы имеете дело со списком, чтобы найти объект, вам нужно перебрать весь массив и сравнитьсвойство, чтобы найти тот, который вы ищете, это может замедлить ваше приложение по мере увеличения списка.
Когда вы используете SET, механизм под капотом использует хеш-индексы, чтобы найти объект, поэтому он требуету вас есть только время, чтобы вычислить только тот индекс, который вы ищете, и вы можете получить доступ прямо к вашему объекту , ЭТО ТАК, КУХНЯ, НЕТ.Чтобы использовать SET, объект должен соответствовать протоколу Hashable начиная с Swift 4.1, если ваш класс или структура и все свойства соответствуют Hashable, то соответствие с протоколом Hashable и Equatable автоматически выполняется за вас.Если вы не удовлетворяете этим требованиям, вам нужно будет убедиться, что вы соответствуете Equatable и Hashable протоколу.
Equatable протокол должен переопределить статический func == (..) , чтобыдля сравнения вашего объекта.
В хешируемом протоколе необходимо предоставить, насколько это возможно, уникальное целочисленное значение hashValue , которое должно быть одинаковым в двух объектах, когда они равны.Надеюсь, что эта помощь