Ios 删除具有重复关键点的对象
我的代码Ios 删除具有重复关键点的对象,ios,arrays,swift,dictionary,Ios,Arrays,Swift,Dictionary,我的代码 class Inbox { var user = "name" var pmsg = "label" var match = "" var resim = "photo" var userID = "" var distance = "" var updated = "" var isAttendingNow = "" var isAttendingNowText = "" init(user : S
class Inbox {
var user = "name"
var pmsg = "label"
var match = ""
var resim = "photo"
var userID = ""
var distance = ""
var updated = ""
var isAttendingNow = ""
var isAttendingNowText = ""
init(user : String, pmsg: String, match: String, resim: String, userID : String, distance: String, updated: String, isAttendingNow: String, isAttendingNowText: String) {
self.user = user
self.pmsg = pmsg
self.match = match
self.resim = resim
self.userID = userID
self.distance = distance
self.updated = updated
self.isAttendingNow = isAttendingNow
self.isAttendingNowText = isAttendingNowText
}
}
var arrayOfRels: [Inbox] = [Inbox]()
我的目标是删除userID密钥的重复项
我怎样才能做到这一点呢?使用
Hashable
class RRR : Hashable {
var hashValue: Int = 0
static func == (lhs: RRR, rhs: RRR) -> Bool {
// in your case set only userID
return lhs.name == rhs.name && lhs.age == rhs.age
}
var name:String
var age:Int
init(name:String,age:Int) {
self.name = name
self.age = age
}
}
//
您可以使用集合来确定哪些UseID是唯一的:
func filteredRels(source [Inbox]) -> [Inbox] {
var keys: Set<String> = []
return source.filter {
if keys.contains($0.userID) {
return false
} else {
keys.insert($0.userID)
return true
}
}
}
func filteredRels(源[收件箱])->[收件箱]{
变量键:Set=[]
返回源.filter{
if keys.contains($0.userID){
返回错误
}否则{
key.insert($0.userID)
返回真值
}
}
}
(在编辑器中砰的一声关闭,因此可能需要一些小的清理。)签出以下内容:
extension Sequence where Iterator.Element: Hashable {
func uniqueOrdered() -> [Iterator.Element] {
return reduce([Iterator.Element]()) { $0.contains($1) ? $0 : $0 + [$1] }
}
}
class Inbox: Hashable {
...
...
static func == (lhs: User, rhs: User) -> Bool {
return lhs.userID == rhs.userID
}
}
arrayOfRels.uniqueOrdered()
您可以使用集合在几行中执行此操作:
var unique = Set<String>()
arrayOfRels = arrayOfRels.filter{unique.insert($0.userID).inserted}
var unique=Set()
arrayOfRels=arrayOfRels.filter{unique.insert($0.userID).inserted}
您应该使用设置
或传感器数据集
,这样您就不会有重复的对象。您可以实现hashable
并检查userID
是否相等,以便在集合中添加这些。什么词典?您的标题是“从字典中删除具有重复值的项”,但我在任何地方都没有看到字典。您似乎有一个收件箱
对象数组。您想删除具有重复用户ID密钥的对象吗?@duncac chill-man。我编辑了它。好吗?当我在tableview的cellforrowat中使用它时,let set=set(self.arrayOfRels)let release=set[indexPath.section]我得到的是不能用'Int'error类型的索引下标'set'类型的值use let set=Array(set(self.arrayOfRels)),这是什么意思。我给你的代码应该完全符合你的要求。
var unique = Set<String>()
arrayOfRels = arrayOfRels.filter{unique.insert($0.userID).inserted}