首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >覆盖Swift中的Equatable和Hashable

覆盖Swift中的Equatable和Hashable
EN

Stack Overflow用户
提问于 2019-06-02 08:07:13
回答 2查看 1K关注 0票数 0

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

代码语言:javascript
复制
// Coredata NSManagedObject
import Foundation
import CoreData

@objc(Business)
public class Business: NSManagedObject {

}

覆盖错误消息:

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-06-02 08:50:11

既然NSManagedObject已经符合Equatable,为什么还要费心再遵循它呢?:)只需覆盖==函数,就可以了!

代码语言:javascript
复制
extension Business {
    static func == (lhs: Business, rhs: Business) -> Bool {
        print("custom equation has been called")
        return lhs.id == rhs.id
    }
}

你可以像这样测试它:

代码语言:javascript
复制
var b1 = Business()
var b2 = Business()
b1.id = "1"
b2.id = "2"

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

输出的结果证明您的自定义==函数已被调用。

代码语言:javascript
复制
custom equation has been called
b1 == b2 ? false
票数 -1
EN

Stack Overflow用户

发布于 2019-06-02 08:47:19

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

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

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56411287

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档