两个不同对象的两个数组的联合

我有两个不同的对象的两个数组

对象1:

Class partner { var pImage: String? var pTimeStamp: NSDate? var pTitle: String? var ID: String? } 

对象2:

 Class customer { var cImage: String? var cTimeStamp: NSDate? var cTitle: String? var ID: String? var isCustomer : Bool? } 

我想从这两个array objects创build一个array (以一种有效的方式),这样在新Array内就不会再有具有相同IDcID,pID )的伙伴客户对象。 基于ID的这两个数组的基本联合 。 请帮忙。

编辑: 这些对象存储在CoreData中,当我想要以上所需的结果我已经有两个这些对象的数组

超级聪明的方法是让Set为你做所有的工作。 使这些对象采用具有ID属性的通用协议。 定义该协议的平等意味着具有相同的ID值。 现在,如果你不关心顺序,强制数组设置和联合集。 如果你关心顺序,你必须改用NSOrderedSet。 执行联合操作后,您可以强制回到Array。

另一种方法(“哑”)是循环通过数组,build立一个字典,其关键是ID值。 就像基于ID平等的集合一样,这可以防止你试图避免的重复。 这不是低效的,因为你只是循环一次,每个数组,并且字典键的查找速度很快。 当你build立了字典,转换回数组。 但是,再一次,除非采取其他措施,否则将失去原始的arrays顺序。

(但是,这两个答案都假设你愿意修改你的对象,使它们甚至可以生活在一个共同的集合中;就目前而言,它们不能,因为它们是两个不相关的types)。