0

我有一个NSMutableArray自定义对象,它们通过NSArchiver. 我需要能够检索存档作为备份并将其与现有NSMutableArray的应用程序合并。我需要删除应用内NSMutableArray和未存档之间的重复项,但通常使用NSSet或使用比较的方法是isEqualcontainsObject不工作,因为虽然最初相等的对象显然不是在存档后。我可以通过两个数组进行嵌套迭代并比较对象 ivars,但这似乎相当繁重。

有什么我想念的吗。我对 Objective-C 和使用NSArchiver.

4

1 回答 1

1

isEqual:并且hash应该在您存储的对象中被覆盖NSArchiver(如果它们是自定义的),否则您将无法将已取消归档的项目与您已有的实例进行比较。

通常,该isEqual:方法必须关心对两个对象的相等性有意义的所有 ivars,即使因为我不知道您如何认为能够比较使用许多其他对象的两个对象而不检查它们中的每一个。这只是你必须做的。

如果您有带有 x、y 和 z ivars 的 A 类,那么通常是[a1 isEqual:a2]iif [a1.x isEqual:a2.x] && [a1.y isEqual:a2.y] && [a1.z isEqual:a2.z],这没什么奇怪的。

于 2012-12-16T02:42:05.173 回答