0

有没有办法覆盖 NSManagedObject 的 Equatable?我有一个包含 300k 个对象的 coredata 数据集,我需要根据对象的业务 ID 删除重复项。

// Coredata NSManagedObject
import Foundation
import CoreData

@objc(Business)
public class Business: NSManagedObject {

}

覆盖错误消息:

在此处输入图像描述

4

2 回答 2

3

NSManagedObject已经声明它同时符合EquatableHashable。无需添加: Equatable.

您需要直接在Business类中覆盖关联的方法,而不使用扩展。

于 2019-06-02T00:47:19.447 回答
-2

既然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
于 2019-06-02T00:50:11.383 回答