перестановка значений в массиве - PullRequest
2 голосов
/ 30 мая 2011

У меня есть массив словарей.

В каждом словаре есть ключ «цвет», и возможными значениями цвета являются «красный», «зеленый», «синий», «желтый». В массив добавляются словари в том порядке, в котором при получении значения для ключа «color» мы получаем «yellow», «green», «red» и «blue».

Редактировать :

I have an array objectsArray of dictionaries.
for(int i=0,i<[objectsArray count];i++)
{
  NSDictionary *dict = [objectsArray objectAtIndex:i];
  NSLog(@"color: %@\n",[dict valueForKey:@"color"]); //
}
Output: 
yellow
green
red 
blue

I want output to be
red
green
blue
yellow

Как я могу это сделать. Какие-либо предложения. Спасибо заранее.

Ответы [ 3 ]

2 голосов
/ 30 мая 2011

«Украл» это из ответа на мой собственный вопрос:

Если ваш массив изменчив, вы можете отсортировать его с помощью методов -sortUsing ....Если нет, вы можете создать новый отсортированный массив с помощью методов -sortedArrayUsing ....Например, есть -sortUsingComparator: и -sortedArrayUsingComparator: методы, которые принимают блок компаратора в качестве параметра.Вам просто нужно предоставить блок, который сравнивает два объекта, используя ваш пользовательский порядок сортировки, например:

[myArray sortUsingComparator:^(id firstObject, id secondObject) {     
    NSString *firstKey = [firstObject valueForKey:@"color"];     
    NSString *secondKey = [secondObject valueForKey:@"color"];
    if ([firstKey stringEqual:@"red"] || [lastKey stringEqual:@"green"])
         return NSOrderedAscending;
    else if ([firstKey stringEqual:secondKey])
         return NSOrderedSame;
    else
         return NSOrderedDescending; }]; 

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

Проверить: Obj / C: сортировка массива в произвольном порядке

1 голос
/ 30 мая 2011
NSMutableArray *newArray = [objectsArray mutableCopy]
[newArray exchangeObjectAtIndex:3 withObjectAtIndex:4];
[newArray exchangeObjectAtIndex:0 withObjectAtIndex:4];
[objectsArray release];
objectsArray = newArray;

надеюсь, это поможет!

0 голосов
/ 30 мая 2011

Вы можете переупорядочивать объекты в массиве различными методами сортировки, подробности смотрите в справочнике .

Начиная с

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...