Semati c из "==" для NSManagedObject в Swift - PullRequest
0 голосов
/ 14 февраля 2020

Согласно 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 с ним, чтобы избежать ненужной путаницы.

...