gpt4 book ai didi

arrays - 如何在 Swift 中合并两个自定义类型数组并删除重复的自定义类型项?

转载 作者:行者123 更新时间:2023-11-28 06:02:21 24 4
gpt4 key购买 nike

我在 Playgraound 中有以下代码无法正常工作。

class Obj: NSObject {
var va1: String? = nil
var va2: Int? = nil
init(_ v1: String,_ v2: Int){
va1 = v1
va2 = v2
}

static func ==(lhs: Obj, rhs: Obj) -> Bool {
guard lhs.va1 == rhs.va1 else { return false }
guard lhs.va2 == rhs.va2 else { return false }
return true
}
}

var objArray1: [Obj] = [Obj("a", 1), Obj("b", 2), Obj("c", 3)]
var objArray2: [Obj] = [Obj("a", 1), Obj("b", 2), Obj("d", 4)]

objArray1 += objArray2
objArray1 = Array(Set(objArray1))

但是 objArray1 将包含所有重复项。

我已经检查了其他问题,例如:
Removing Duplicates From Array of Custom Objects Swift .

Remove duplicate objects in an array .

但是,就我而言,我无法更改 Obj 的父类(super class) NSObject。 自定义类型必须是 NSObject 的子类。

问题:有什么优雅的方法可以实现合并两个自定义类型数组并删除重复的自定义类型项

最佳答案

  var tempArray: [Obj] = []
let removalArray = objArray1.filter { (someObj) -> Bool in
if tempArray.isEmpty {
tempArray.append(someObj)
return true
}
if !tempArray.contains(where: { (anotherObj) -> Bool in
return anotherObj.va2 == someObj.va2 && anotherObj.va1 == someObj.va1
}) {
tempArray.append(someObj)
return true
}
return false
}

我把它放在设置内容之前的底部。

关于arrays - 如何在 Swift 中合并两个自定义类型数组并删除重复的自定义类型项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49246248/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com