Создание массива из свойств объектов в другом массиве
Есть ли удобный способ взять массив/набор объектов и создать новый массив/набор, содержащий некоторое свойство каждого элемента в первом массиве?
Например, массив содержит объекты Car. Мне нужен массив licensePlates, где каждый автомобиль имеет NSObject car.licensePlate.
В настоящее время я просто перебираю первый массив, добавляя объекты к моему изменяемому массиву результатов, но задавался вопросом, существует ли для него метод создания экземпляров (проверены документы для NSArray).
Ответы
Ответ 1
Это возвращает массив, содержащий значение licensePlate
из каждого элемента массива myCars
:
NSArray *licensePlates = [myCars valueForKeyPath:@"licensePlate"]
Если вы хотите только уникальные элементы (например), вы можете сделать что-то вроде этого:
NSArray *licensePlates = [myCars valueForKeyPath:@"@distinctUnionOfObjects.licensePlate"];
Дополнительные возможности см. в документации Операторы коллекции в Key- Руководство по программированию кодирования значений.