Переопределить Equatable и Hashable в Swift - PullRequest
0 голосов
/ 02 июня 2019

Есть ли способ переопределить Equatable NSManagedObject? У меня есть набор данных coredata из 300 тыс. Объектов, и мне нужно удалить дубликаты на основе бизнес-идентификатора объекта.

// Coredata NSManagedObject
import Foundation
import CoreData

@objc(Business)
public class Business: NSManagedObject {

}

сообщение об ошибке переопределения:

enter image description here

Ответы [ 2 ]

2 голосов
/ 02 июня 2019

NSManagedObject уже заявляет, что оно соответствует Equatable и Hashable.Нет необходимости добавлять : Equatable.

. Вам необходимо переопределить связанные методы непосредственно в вашем классе Business без использования расширения.

1 голос
/ 02 июня 2019

Поскольку NSManagedObject уже соответствует Equatable, почему вы пытаетесь соответствовать ему снова?:) Просто переопределите функцию ==, и все готово!

extension Business {
    static func == (lhs: Business, rhs: Business) -> Bool {
        print("custom equation has been called")
        return lhs.id == rhs.id
    }
}

Вы можете проверить это так:

var b1 = Business()
var b2 = Business()
b1.id = "1"
b2.id = "2"

print("b1 == b2 ? \(b1 == b2)")

Распечатанный результат подтверждает ваш пользовательский == функция вызывается.

custom equation has been called
b1 == b2 ? false
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...