Arrays 如何在swift中从对象数组中消除重复对象
我有两个来自web服务的数组,我需要找出Array2是否具有与Array1相同的对象。 为此,我使用以下代码:Arrays 如何在swift中从对象数组中消除重复对象,arrays,swift,Arrays,Swift,我有两个来自web服务的数组,我需要找出Array2是否具有与Array1相同的对象。 为此,我使用以下代码: var arr1 = [CustomObject]() var arr2 = [CustomObject]() var arr3 = [CustomObject]() var arr4 = [CustomObject]() self.arr3 = self.arr1 + self.arr2 //concatenate two arrays self.arr4 = Array(
var arr1 = [CustomObject]()
var arr2 = [CustomObject]()
var arr3 = [CustomObject]()
var arr4 = [CustomObject]()
self.arr3 = self.arr1 + self.arr2 //concatenate two arrays
self.arr4 = Array(Set(arr3)) // find out uniq values
// below is the extension
extension Array where Element : Hashable {
var unique: [Element] {
var uniqueValues: [Element] = []
forEach { item in
if !uniqueValues.contains(item) {
uniqueValues += [item]
}
}
return uniqueValues
}
}
但它在“Array(Set(arr3))”上面的行上显示错误错误是:-若要为设置添加值,请尝试以下操作:
var arr1 = ["A","B","C"]
var arr2 = ["A","B","C"]
if Set(arr1).symmetricDifference(arr2).isEmpty {
print("The Arrays Match")
}
概述:
- 为了让集合存储自定义类/结构,自定义类/结构需要符合
Hashable
和间接protocol
equalable
协议
- 下面给出了一个使用
结构的示例,您也可以使用类
什么错误?
CustomObject
是否可哈希
?有关哈希值的错误我的CustomObject有名称、Id、摘要。。。等等。我需要识别具有类似ID的对象。如果您在问题中包含错误消息,会更有帮助。请查看关于“Hashable+Swift”的信息,查看如何执行。简而言之,您必须帮助(NS)Set
了解如何定义unicity<代码>(NS)设置使用哈希协议执行此操作。因此,将“Hashable compability”添加到类CustomObject
。我已经使用了上面的方法,但是如何在“self.arr4=Array(Set(arr3))”中指定它,self.arr4=Array(Set(arr3))
只需使CustomObject
Hashable
struct CustomObject : Hashable{
var something : Int //It is just an example, this could be any type, but some how you should find a way to compute the hash value.
//MARK: Hashable
var hashValue: Int {
return something
}
}
//MARK: CustomObject - Equatable
func ==(lhs: CustomObject, rhs: CustomObject) -> Bool {
return lhs.something == rhs.something
}