Anupam Mishra Anupam Mishra -4 years ago 76
Swift Question

How to get the unique id's of objects in an array swift

I have a custom class like this -

class Event: NSObject
{
var eventID: String?
var name:String?
}


Now i have an array of
Event
object's like

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)


to get the unque eventID's from array i have written code like this which is working great -

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))


I wanted to know is there any alternate way to get the unique id's from array of objects more effectively than i am using . May be something by using
NSPredicate
.

Because an array having
thousands
of objects, my code going to do more iteration .

Answer Source

You can use a Set to obtain only the unique values. I would suggest that you have your function return a Swift array rather than NSArray too.

func getUniqueIDsFromArrayOfObjects(events:[Event])->[String]
{
   let eventIds = events.map { $0.eventID!}
   let idset = Set(eventIds)
   return Array(idset)
}
Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download