gpt4 book ai didi

ios - 如何覆盖 NSManagedObjects 的 hash 和 isEqual?

转载 作者:可可西里 更新时间:2023-11-01 06:15:56 25 4
gpt4 key购买 nike

我们有一堆不同类型的 NSManagedObjects。其中一些具有其他 NSManagedObjects 的 NSSet 成员。问题是我真的需要重写集合中对象的散列和 isEquals 方法——但它们是 NSManagedObjects。我在获取集合中的多个相同对象时遇到问题。据我所知,由于散列默认为对象地址 - 所有对象都是不同的。所以我需要覆盖 hash 和 isEquals - 但看不到任何方法。

我们拥有的是系统中的一堆东西,更多的东西是通过 XML 传入的——有时是现有对象的重复。当它们相同时,我不想将复制品添加到集合中。

最佳答案

如 Wain 所述,NSManagedObject documentation声明您不得覆盖 hashisEqual:。所以这意味着普通 NSSet 不能满足您的需求。

您的一些选择是:

  • 枚举 NSSet 内容以识别和删除重复项
  • 为您的 NSManagedObjects 编写一个工厂方法,在给定相同的输入时返回相同的对象
  • 修复 XML 以不包含重复的对象
  • 在来自 XML 的对象成为 NSManagedObjects
  • 之前对其进行唯一化
  • 修改输入 XML 以包含您可以跟踪的唯一标识符,假设重复的对象是完全相同的
  • 实现您自己的类似 NSSet 的集合类,执行与 hashisEqual:
  • 不同的唯一测试

关于ios - 如何覆盖 NSManagedObjects 的 hash 和 isEqual?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16246584/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com