Объединение объектов в массив - PullRequest
1 голос
/ 12 октября 2010

У меня есть один массив, который предварительно заполнен словарями с каждым словарем, состоящим из двух ключей.

{
   name = object1;
   quantity = 5;
},
{ 
   name = object2;
   quantity = 2;
}

Я хочу иметь возможность добавлять больше объектов и комбинировать любые дублирующие словари. Так, например, если бы я добавил 5 объекта один и 3 объекта 2, это было бы результатом.

 {
       name = object1;
       quantity = 10;
 },
 { 
       name = object2;
       quantity = 5;
 }

Моя конечная цель - иметь возможность отображать количество рядом с элементом в табличном представлении. Каков наилучший способ сделать это?

Ответы [ 4 ]

3 голосов
/ 12 октября 2010

Звучит так, как вы хотите NSCountedSet.

1 голос
/ 12 октября 2010

Если вы действительно хотите перебрать существующую структуру, вы можете сделать что-то вроде:

for (NSMutableDictionary *dict in ArrayName) {
    if([[dict valueForKey:@"name"] isEqual:someobject]) {
        int oldValue = [[dict valueForKey:@"quantity"] intValue];
        [dict setValue:[NSString stringWithFormat:@"%d",oldValue+1] forKey:@"quantity"];
    }
}

Я предположил, что вы сохранили количество в виде строки NSS, возможно, вы использовали что-то еще, например NSNumber.*

Я думаю, что лучшая идея - создать свой собственный класс с двумя свойствами: именем и количеством.Затем удерживайте один массив этих объектов и выполните итерацию по нему.

0 голосов
/ 12 октября 2010

Я не имею четкого представления о том, что вы делаете, но,

Вы можете решить эту проблему с помощью всего лишь словаря (без массива), в котором ваши объекты хранятся в качестве ключа, а их количество - в качестве значения.

поэтому, когда вы хотите добавить объект, вы сначала проверяете, есть ли у вас этот объект -Если у вас его нет, вы добавляете object1 = 1 -Если у вас есть, то вы увеличиваете значение этого объекта1 = 2

0 голосов
/ 12 октября 2010

Ну, так как ключи для ваших словарей всегда выглядят одинаково, я хотел бы знать, не является ли это на самом деле другим словарем:

{ object1: 10, object2: 5}

Если предположить, что имена ваших объектов являются действительными ключами, я бы использовал их какклавиш, а затем просто увеличивайте счетчики по мере необходимости, когда вы получаете больше объектов для добавления.

...