Swift 唯一的对象数组

Swift 唯一的对象数组,swift,list,unique,Swift,List,Unique,我有一个如下所示的数组: var persons = [Person]() 一个人包含以下内容: id : Int name : String age : Int gender : String 在我的人员列表中,我有多个人员,但如何按唯一名称对该列表进行排序 我发现这个let unique=Array(Set(originals))但是它似乎不适用于对象列表,我想保留对象的所有信息 如果我的列表包含以下行: Adam, Adam, John, John, Michael, Nick, To

我有一个如下所示的数组:

var persons = [Person]()
一个人包含以下内容:

id : Int
name : String
age : Int
gender : String
在我的人员列表中,我有多个人员,但如何按唯一名称对该列表进行排序

我发现这个
let unique=Array(Set(originals))
但是它似乎不适用于对象列表,我想保留对象的所有信息

如果我的列表包含以下行:

Adam, Adam, John, John, Michael, Nick, Tony
我只想展示:

Adam, John, Michael, Nick Tony
我仍然希望能够得到亚当斯的年龄为例

有什么想法吗

编辑
人员声明

import Foundation

public class Person : NSObject {
    var id = ""
    var name = ""
    var age = 0
    var gender = ""
}

func ==(lhs: Person, rhs: Person) -> Bool {
    return lhs.name == rhs.name
}

您需要添加此扩展以从人员数组返回有序集

extension Collection where Element: Hashable {
    var orderedSet: [Element] {
        var set: Set<Element> = []
        return reduce(into: []){ set.insert($1).inserted ? $0.append($1) : ()  }
    }
}

测试

let person1 = Person(id: "1", name: "Adam") 
let person2 = Person(id: "1", name: "Adam") 
let person3 = Person(id: "2", name: "John") 
let person4 = Person(id: "2", name: "John") 
let person5 = Person(id: "3", name: "Michael") 
let person6 = Person(id: "4", name: "Nick") 
let person7 = Person(id: "5", name: "Tony") 
let people = [person1,person2,person3,person4,person5,person6,person7] 
people.orderedSet //[{id "1", name "Adam"}, {id "2", name "John"}, {id "3", name "Michael"}, {id "4", name "Nick"}, {id "5", name "Tony"}]

你需要使你的类Person是可平等的,然后你可以使用这个扩展@LeoDabus,我现在已经这样做了,但是我不知道现在如何过滤这个列表。
func==(lhs:Person,rhs:Person)->Bool{return lhs.id==rhs.id}
只要使用
youraray.orderedSetValue
对唯一名称排序意味着什么?这是否意味着取出重复的记录,然后按姓名字段排序?他现在已经在Skype上添加了你Leo,你看到了吗?我会检查一下
let person1 = Person(id: "1", name: "Adam") 
let person2 = Person(id: "1", name: "Adam") 
let person3 = Person(id: "2", name: "John") 
let person4 = Person(id: "2", name: "John") 
let person5 = Person(id: "3", name: "Michael") 
let person6 = Person(id: "4", name: "Nick") 
let person7 = Person(id: "5", name: "Tony") 
let people = [person1,person2,person3,person4,person5,person6,person7] 
people.orderedSet //[{id "1", name "Adam"}, {id "2", name "John"}, {id "3", name "Michael"}, {id "4", name "Nick"}, {id "5", name "Tony"}]