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 .
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)
}
                            let uniqueRecords = jobs.reduce([], {
        $0.contains($1) ? $0 : $0 + [$1]
    })
                        If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With