如何在数组swift中获取对象的唯一id

Anu*_*hra 5 custom-object arrayobject ios swift

我有这样的自定义类 -

class Event: NSObject
{
    var eventID: String?
    var name:String?
}
Run Code Online (Sandbox Code Playgroud)

现在我有一个Event像对象的数组

var events = [Event]()

var event1 = Event()
event1.eventID = "1"
event1.name = "Anu"

var event2 = Event()
event2.eventID = "2"
event2.name = "dev"

var event3 = Event()
event3.eventID = "1"
event3.name = "Anu"

events.append(event1)
events.append(event2)
events.append(event3)
Run Code Online (Sandbox Code Playgroud)

从数组中获取unque eventID我已经编写了这样的代码,它工作得很好 -

func getUniqueIDsFromArrayOfObjects(events:[Event])->NSArray
{
    let arr = events.map { $0.eventID!}
    let uniquearr:NSMutableArray = NSMutableArray()
    for obj in arr
    {
        if !uniquearr.containsObject(obj) {
            uniquearr.addObject(obj)
        }
    }
    return uniquearr;
}

print(getUniqueIDsFromArrayOfObjects(events))
Run Code Online (Sandbox Code Playgroud)

我想知道是否有任何替代方法可以比我使用的更有效地从对象数组中获取唯一ID.可能是使用的东西NSPredicate.

因为一个数组有thousands对象,我的代码会做更多的迭代.

Pau*_*w11 10

您可以使用a Set来仅获取唯一值.我建议你让你的函数返回一个Swift数组而不是NSArray.

func getUniqueIDsFromArrayOfObjects(events:[Event])->[String]
{
   let eventIds = events.map { $0.eventID!}
   let idset = Set(eventIds)
   return Array(idset)
}
Run Code Online (Sandbox Code Playgroud)