Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/110.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 删除具有重复关键点的对象_Ios_Arrays_Swift_Dictionary - Fatal编程技术网

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}