Согласно Swift do c, при применении оператора ==
к двум объектам Swift фактически вызывается метод ==
типа. Но я не могу найти описание поведения этого метода в NSManagedObject
документе . Я знаю, NSManagedObject
имеет isEqual()
метод, но мне неясно, использует ли ==
его или нет .
Были обсуждения на SO по поводу использования ==
с NSManagedObject
, как этот . Но речь шла об Objective C, а ==
означает сравнение указателей объектов, что не обязательно имеет место в Swift (поскольку его поведение определяется типом, а не языком в Swift).
ОБНОВЛЕНИЕ 1:
Я только что понял, isEqual()
на самом деле метод NSObject
. Поэтому я, возможно, задал неправильный вопрос. Весьма вероятно, что Core Data вообще не имеет дело с ==
в его Swift API, вместо этого ==
был обработан на более высоком уровне, то есть NSObject
. Я не нахожу в NSObject ничего, что может сделать c, чтобы доказать свою гипотезу, но я нахожу следующее в другом SO обсуждении
Оператор Swift == автоматически использует isEqual ( Метод object :) при сравнении экземпляров NSObject.
Тем не менее, то, что именно isEqual
делает с NSManagedObject
объектом, также сбивает с толку. Официальный do c не имеет никакого описания. В большинстве обсуждений SO считалось, что это просто сравнение указателей.
Если так, то почему бы просто не использовать ===
, который имеет четко определенное поведение в Swift? Я не хотел этого делать, потому что думал, что это не точно express мое намерение, но теперь я думаю, что мне следует go с ним, чтобы избежать ненужной путаницы.