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

Union of two array of two different Objects

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

对象 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 中创建一个 array(当然是一种有效的方式),这样就没有 合作伙伴 和具有相同 ID (cID,pID) 的 customer 对象应该在新的 Array基本上是根据 ID 将这两个数组合并。请帮忙。

编辑: 这些对象存储在 CoreData 中,当时我确实想要高于预期的结果,我已经有两个这些对象的数组

超级聪明的方法是让 Set 为您完成所有工作。使这些对象采用具有 ID 属性 的通用协议。为该协议定义相等性意味着具有相同的 ID 值。现在,如果您不关心顺序,请将数组强制转换为集合并将集合合并。如果您确实关心顺序,则必须改用 NSOrderedSet。您可以在执行并集操作后强制返回 Array。

另一种方法("dumb" 方法)是遍历数组,构建一个字典,其键是 ID 值。就像基于 ID 相等的集合一样,这可以防止您试图避免的重复。这并不是低效的,因为您只在每个数组中循环一次,而且字典键的查找速度很快。构建字典后,将其转换回数组。但是,再次强调,除非采取额外措施,否则您将失去原始数组顺序。

(但是,这两个答案都假设您愿意修改对象,以便它们甚至可以存在于一个公共集合中;就目前情况而言,它们不能,因为它们是两个不相关的类型。)