У меня есть пользовательский класс, как это -Как получить уникальные идентификаторы объектов в массиве быстрой
class Event: NSObject
{
var eventID: String?
var name:String?
}
Теперь у меня есть массив 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)
, чтобы получить 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))
Я хотел знать, это ther e любой альтернативный способ получить уникальный идентификатор из массива объектов более эффективно, чем я использую. Может быть что-то, используя NSPredicate
.
Поскольку массив имеет thousands
объектов, мой код будет делать больше итераций.
Простейший способ я хотел бы предложить, чтобы создать набор. –
Если вам не нужен порядок результирующего массива, вы можете просто использовать: let finalArray = Array (Set (arr)) –
Возможный дубликат [Есть ли в API Swift простой способ удаления повторяющихся элементов из массива ?] (http://stackoverflow.com/questions/25738817/does-there-exist-within-swifts-api-an-easy-way-to-remove-duplicate-elements-fro) – dfri