我们有一堆不同类型的 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/

    10-10 16:43