我有两个不同对象的两个数组
对象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
array
中创建一个objects
(当然,以有效的方式),以便没有合作伙伴和<具有相同 ID ( cID,pID )的strong>客户对象应在新Array
内重复。
基于ID的这两个数组的基本联合。请帮忙。
编辑: 这些对象存储在CoreData中,当我想要上面所需的结果时,我已经有两个这些对象的数组
答案 0 :(得分:1)
超级聪明的方法是让Set为你做所有工作。使这些对象采用具有ID属性的通用协议。将该协议的相等性定义为具有相同的ID值。现在,如果您不关心顺序,则将数组强制设置为Set并将其合并。如果你关心订单,你将不得不使用NSOrderedSet。执行union操作后,您可以强制返回Array。
替代方案(“哑”方式)是循环通过数组,构建一个字典,其键是ID值。就像基于ID相等的集合一样,这可以防止您尝试避免重复。它并不低效,因为你只通过每个数组循环一次,并且字典键的查找速度很快。构建字典后,转换回数组。但是,除非您采取其他措施,否则您将失去原始数组顺序。
(但是,这两个答案都假设您愿意修改您的对象,以便它们甚至可以存在于一个共同的集合中;事实上,它们不能,因为它们是两个不相关的类型。)