2011-12-25 4 views
2

У меня есть NSArray, содержащий некоторые объекты.NSArray сортировка благодаря другому NSArray

NSArray *firstArray = [NSArray arrayWithObjects:obj, plop, color, shape, nil];

Теперь у меня есть еще один NSArray, содержащий только объекты с первого NSArray, но не в том же порядке.

NSArray *secondArray = [NSArray arrayWithObjects: shape, color, plop, nil];

Я хотел бы отсортировать secondArray в том же порядке, в firstArray.

Я хочу secondArray быть:

  • хлопнуть
  • цвет
  • форма

ответ

0

Обычно это такие вещи, на которые я бы автоматически указывать людей Apple's NSSortDescriptor Class, но это похоже на то, что вы делаете, очень прикладное приложение &.

Если ваша форма, цвет и плюх объекты являются истинными объектами какао (т.е. they respond to isKindOfClass selectors), вы можете пройти через каждую часть вашего secondArray и создать новый изменяемый массив (назовем его thirdArray ради аргумента) и использовать перечисление на элементы secondArray, чтобы вставить каждый объект в thirdArray в том формате, который вы ищете.

+0

Спасибо за ваш ответ;) На самом деле эти объекты происходят из того же класса какао. Я увижу это, спасибо вам;) – Aladin

+0

Но есть ли способ сравнить с [firstArray indexOfObject: (id)]? – Aladin

+0

Несомненно! Теперь вы знаете, как определить тип любого объекта, который вы храните как в 'secondArray', так и в' firstArray'. Или вы говорите о содержимом каждого объекта, который вы сохранили в массивах (т. Е. «NSString» по сравнению с другим «NSString» или «NSNumber» или?)? –

1

NSArray уже заказан, поэтому вы можете использовать его в своих интересах: почему бы вам не искать объекты внутри firstArray, но не внутри второго массива, а затем удалить из первого массива?

NSMutableArray *arrayObjectsInFirstArrayNotInSecondArray = [NSMutableArray arrayWithArray:firstArray]; 
[arrayObjectsInFirstArrayNotInSecondArray removeObjectsInArray:secondArray]; 

NSMutableArray *solution = [NSMutableArray arrayWithArray:firstArray]; 
[solution removeObjectsInArray:arrayObjectsInFirstArrayNotInSecondArray]; 
Смежные вопросы