删除具有重复键的对象

时间:2018-08-14 00:17:17

标签: 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 : 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]()

我的目标是删除重复的用户ID项。

我该如何实现?

4 个答案:

答案 0 :(得分:0)

使用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
    }

}

//

let arr = [RRR(name: "qqq", age: 12) ,RRR(name: "qqq", age: 12) , RRR(name: "hhhh", age: 12) , RRR(name: "ppppp", age: 12) ]

let set = Array(Set(arr))

print(set)  // [ RRR(name: "qqq", age: 12) , RRR(name: "hhhh", age: 12) , RRR(name: "ppppp", age: 12)]

答案 1 :(得分:0)

您可以使用一个集合来找出哪些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
      }
   }
}

(在编辑器中禁止,因此可能需要进行一些小的清理。)

答案 2 :(得分:0)

结帐:

private $City; 

public function __construct(array $attributes = []) { 
    parent::__construct($attributes); 
    $this->City = new City; 
} 

答案 3 :(得分:0)

您可以使用一组代码在几行中完成此操作:

var unique = Set<String>()
arrayOfRels = arrayOfRels.filter{unique.insert($0.userID).inserted}